Skip to content

请教一下想把antd组件封装为biz业务库的话,umi的插件应该怎么弄? #12110

Answered by fz6m
edwards19900128 asked this question in Q&A
Discussion options

You must be logged in to vote

在 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: {

Replies: 2 comments 1 reply

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
1 reply
@edwards19900128
Comment options

Answer selected by edwards19900128
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants