pro-components
pro-components copied to clipboard
👑 [需求] 每个模板组件是否考虑提供 provider,方便中后台应用时进行统一配置
trafficstars
🥰 需求描述
为每个模板组件提供单独的provider
⛰ 功能需求适用场景
- 在中后台应用的同一个系统中,组件整体的风格会更偏向统一,而在使用
proTable,proForm这些多配置参数的组件时,每次使用都要配置一系列重复的参数,这个时候就可以通过provider在系统的入口文件统一配置这些重复的参数,减少大量重复的样板配置 - 在
pro-components发布break changes(类似reload的处理)时,使用方可以更加方便的统一处理这些break,否则每个使用组件的地方都要单独处理
🧐 解决方案
- 每个模板组件向外提供单独的
provider,如:导出ProTableProvider,方便配置同一种风格的ProTable组件
import { ProTableProvider } from '@ant-design/pro-table'
import { ProFormProvider } from '@ant-design/pro-form'
- 类似
@ant-design/pro-provider这种全局provider,如:通过valueTypeMap扩展所有的valueType
import ProProvider from '@ant-design/pro-provider';
const ProComponentsProvider: React.FC = ({
children
}) => {
const values = useContext(ProProvider);
return (
<ProProvider.Provider
value={{
...values,
valueTypeMap: {
link: {
render: (text) => <a>link{text}link</a>
}
}
}}>
{children}
</ProProvider.Provider>
)
}
像你这种情况,通常都会基于 proTable... proForm... 并结合项目的需求再抽象封装一层。
像你这种情况,通常都会基于 proTable... proForm... 并结合项目的需求再抽象封装一层。
二次封装组件无疑是最好的选择,而类似proTable这种多配置项的非原子组件,在发布break changes更新版本时,对于存量使用的地方更改起来很是不方便,而Provider这种方式感觉会更方便点
提供了 ProConfigProvide,不过功能较少,你可以来写pr补充一下