请教一下想把antd组件封装为biz业务库的话,umi的插件应该怎么弄? #12110
-
尝试是用dumi2新建了一个组件库,但是如果把后端请求也加上以及需要使用@umijs/plugin-request,@umijs/plugin-initial-state, @umijs/plugin-model,就不知道该怎么弄了...现在把几个common组件在几个qiankun子应用里复制来复制去... |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
我感觉我是不是思路错了... |
Beta Was this translation helpful? Give feedback.
-
在 umi 的项目里,所有组件库的依赖都必须是纯的,意思是在开发一个组件的库时,里面不能导入 umi 使用 umi 框架提供的方法(如 useModel 等),从而你这个组件库和 umi 无关,在哪个项目都可以用,这是 umi 的一个约束(不允许在第三方库里导入 umi 方法)。 如果你就需要和 umi 的方法联动,应该把这些逻辑用 context 或者通过 props 传递进组件再用,但组件本身是和 umi 无关纯的。 如果你有一些模板的代码,并且要用到 umi 的方法,考虑把它做成 umi 插件,umi 插件可以生成固定的代码然后在项目里导入使用,一个最简单的插件: import { IApi } from 'umi'
export default (api: IApi) => {
api.describe({
key: 'pluginName',
enableBy: api.EnableBy.config,
config: {
schema({ zod }) {
return zod.object({})
}
}
})
api.onGenerateFiles(() => {
api.writeTmpFile({
path: 'index.ts',
content: `export const a = 1`,
})
})
} // .umirc.ts
plugins: [
'你的插件包名'
],
pluginName: {}, 之后在插件 import { a } from 'umi' 从而你可以批量的把模板代码 write 出来使用到各个项目,并且可以联动使用其他插件,关于更多插件用法,详见:插件 API 或参考内置插件实现 |
Beta Was this translation helpful? Give feedback.
在 umi 的项目里,所有组件库的依赖都必须是纯的,意思是在开发一个组件的库时,里面不能导入 umi 使用 umi 框架提供的方法(如 useModel 等),从而你这个组件库和 umi 无关,在哪个项目都可以用,这是 umi 的一个约束(不允许在第三方库里导入 umi 方法)。
如果你就需要和 umi 的方法联动,应该把这些逻辑用 context 或者通过 props 传递进组件再用,但组件本身是和 umi 无关纯的。
如果你有一些模板的代码,并且要用到 umi 的方法,考虑把它做成 umi 插件,umi 插件可以生成固定的代码然后在项目里导入使用,一个最简单的插件: