# v0.11:更新说明 ## 新特性 - 全新的客户端 Application、Plugin 和 Router - antd 升级到 v5 - 新插件 - 数据可视化 - API 秘钥 - Google 地图 ## 不兼容的变化 ### 全新的客户端 Application、Plugin 和 Router #### 插件的变化 以前必须传递一个组件,并且组件需要透传 `props.children`,例如: ```tsx | pure const HelloProvider = (props) => { // do something logic return
{props.children}
; } export default HelloProvider ``` 现在需要改为插件的方式,例如: ```diff | pure +import { Plugin } from '@nocobase/client' const HelloProvider = (props) => { // do something logic return
{props.children}
; } + export class HelloPlugin extends Plugin { + async load() { + this.app.addProvider(HelloProvider); + } + } - export default HelloProvider; + export default HelloPlugin; ``` 插件的功能很强大,可以在 `load` 阶段做很多事情: - 修改路由 - 增加 Components - 增加 Providers - 增加 Scopes - 加载其他插件 #### 路由的变化 如果之前使用了 `RouteSwitchContext` 进行路由修改,现在需要通过插件替换: ```tsx | pure import { RouteSwitchContext } from '@nocobase/client'; const HelloProvider = () => { const { routes, ...others } = useContext(RouteSwitchContext); routes[1].routes.unshift({ path: '/hello', component: Hello, }); return
{props.children}
} ``` 需要改为: ```diff | pure - import { RouteSwitchContext } from '@nocobase/client'; + import { Plugin } from '@nocobase/client'; const HelloProvider = (props) => { - const { routes, ...others } = useContext(RouteSwitchContext); - routes[1].routes.unshift({ - path: '/hello', - component: Hello, - }); return
- {props.children} -
} + export class HelloPlugin extends Plugin { + async load() { + this.app.router.add('admin.hello', { + path: '/hello', + Component: Hello, + }); + this.app.addProvider(HelloProvider); + } + } + export default HelloPlugin; ``` 更多文档和示例见 [packages/core/client/src/application/index.md](https://github.com/nocobase/nocobase/blob/main/packages/core/client/src/application/index.md) ### antd 升级到 v5 - antd 相关详情查看官网 [从 v4 到 v5](https://ant.design/docs/react/migration-v5-cn) - `@formily/antd` 替换为 `@formily/antd-v5`