跳到主要内容

将插件从 Grafana 版本 9.x 迁移到 10.x

请按照以下说明将插件从 Grafana 版本 9.x 迁移到 10.x。

使用 React 18 验证插件行为

Grafana 10 包含了我们对 React 18 的升级以及对新的 React 客户端渲染 API 的使用。这些更改已通过 PR 64428 交付到核心 grafana 仓库。

尽管这些更新带来了许多显著的好处,但它们可能会影响插件的工作方式。特别是,由于改进 useEffect 时序一致性和自动批量状态更新的更改,可能会产生意想不到的副作用。

推荐操作

数据帧字段值现在只是数组

在 Grafana 10 中,数据帧中的值现在作为简单的 JavaScript 数组进行管理(参见 PR #66480)。不再需要将值包装在 Vector<T> 实现中。

大多数针对 9.x 的代码将继续工作,没有任何问题。一个例外是极少数现有代码直接实现 Vector<T> 而不是扩展或使用基类的情况。在这种情况下,代码应返回数组或扩展 FunctionalVector<T>。所有 Vector 实现都已被弃用,将来将被删除。

在编写应在 9.x 上运行的插件时,请继续使用 Vector 接口。在这种情况下,当目标版本为 10+ 时,您现在可以使用简单的数组,而不是包装类。

为了使这种过渡无缝衔接,我们采用了原始 JavaScript Sin™。也就是说,我们使用 Vector 方法 扩展了原生 Array 原型

更新到 React Router v6

从 Grafana 10 开始,插件可以开始使用 v6 版本的 react-router。总的来说,react-router v6 旨在简化路由配置,并为开发者提供更灵活和直观的 API。

如果当前插件版本需要保持与 Grafana v9 的兼容性,那么您可以继续在 Grafana v10 中使用 react-router@v5。这两个版本都可用于插件。但是,我们强烈建议开发者尽快更新其插件以使用 v6 版本的 react-router,因为 v5 版本将在 Grafana v11 中被弃用,随后将被删除。

有关更多一般信息,请参阅 官方 React Router v5 到 v6 迁移指南

使用 @grafana/create-plugin 更新

按照以下步骤开始在您的插件中使用 react-router v6

通过在 <project-root>/.cprc.json 中设置以下功能标志来启用使用 react-router@v6

{
"features": {
"useReactRouterV6": true
}
}

现在使用 create-plugin 工具更新构建配置

npx @grafana/create-plugin@latest update

更新构建配置后,您可能需要对插件进行其他更新。为此,请按照以下步骤操作

2. 使用 <Routes> 而不是 <Switch>

// Using <Routes> instead of <Switch> in `react-router` v6
import { Routes } from 'react-router-dom';

// ...

return (
<Routes>
<Route path="/" element={<Home />} />
</Routes>
);

3. 从 <Route> 组件中删除 exact 属性

return (
<Routes>
{/* BAD (Until v5) */}
<Route exact path="/" element={<Home />} />

{/* GOOD (From v6) */}
{/* (Routes are "exact" by default, you need to use the "*" to match sub-routes) */}
<Route path="/" element={<Home />} />
</Routes>
);

4. 有关更深入的更改,请遵循原始 react-router 迁移指南

访问 官方 react-router v5 到 v6 迁移指南 以获取更多信息。