从 AngularJS 迁移到 React
如果要将插件迁移到 Grafana 基于 React 的插件平台,建议您以新的主版本发布它。
虽然没有从 Angular 插件迁移到新 React 平台的标准路径,但我们了解到最简单的迁移方法之一是:
- 创建一个名为
migrate-to-react
的新分支。 - 使用
create-plugin
工具提供的一个模板从头开始。 - 将现有代码逐步迁移到新插件中,一次迁移一个组件。
迁移面板插件
从 Grafana 7.0 开始,插件从 module.ts
导出 PanelPlugin
,其中 MyPanel
是一个包含 PanelProps
属性的 React 组件。
src/module.ts
import { PanelPlugin } from '@grafana/data';
export const plugin = new PanelPlugin<MyOptions>(MyPanel);
src/MyPanel.tsx
import { PanelProps } from '@grafana/data';
interface Props extends PanelProps<SimpleOptions> {}
export function MyPanel({ options, data, width, height }: Props) {
// ...
}
迁移数据源插件
虽然所有插件都不同,但我们希望分享一个对某些用户有效的迁移过程。
- 定义您的配置模型和
ConfigEditor
。对于许多插件来说,配置编辑器是最简单的组件,因此是开始迁移的好选择。 - 在扩展
DataSourceApi
的类上实现testDatasource()
方法。使用配置模型中的设置确保您可以成功配置和访问外部 API。 - 实现
query()
方法。此时,您可以硬编码查询,因为我们尚未实现查询编辑器。query()
方法同时支持新的数据帧响应和旧的TimeSeries
响应,因此暂时无需担心转换为新格式。 - 实现
QueryEditor
。所需工作量取决于您的查询模型的复杂程度。
至此,您应该可以发布新版本了。
要完全迁移到新的插件平台,请将时间序列响应转换为数据帧响应。
指南
以下指南将帮助您执行特定的迁移操作。
📄️ 从 kbn 包迁移
如何将使用 kbn 包的插件迁移到当前方法。
📄️ 转换值和范围映射
如何将使用值和范围映射的 Angular 插件迁移到 React
📄️ 自定义配置组件
如何将带有自定义字段的 Grafana 插件从 AngularJS 迁移到带有自定义组件的 React。
📄️ 迁移配置设置
如何将 AngularJS 插件配置迁移到 React。
📄️ 从 time_series2 包迁移
如何将使用 app/core/time_series2 包的插件迁移到当前方法。
📄️ 针对旧版本
如何针对旧版本的插件。
📄️ 添加建议提供者
如何为插件添加建议提供者。