pro-components icon indicating copy to clipboard operation
pro-components copied to clipboard

👑 [需求] 每个模板组件是否考虑提供 provider,方便中后台应用时进行统一配置

Open asyncguo opened this issue 3 years ago • 2 comments
trafficstars

🥰 需求描述

为每个模板组件提供单独的provider

⛰ 功能需求适用场景

  1. 在中后台应用的同一个系统中,组件整体的风格会更偏向统一,而在使用proTableproForm这些多配置参数的组件时,每次使用都要配置一系列重复的参数,这个时候就可以通过provider在系统的入口文件统一配置这些重复的参数,减少大量重复的样板配置
  2. pro-components 发布 break changes (类似reload的处理)时,使用方可以更加方便的统一处理这些break,否则每个使用组件的地方都要单独处理

🧐 解决方案

  1. 每个模板组件向外提供单独的provider,如:导出ProTableProvider,方便配置同一种风格的ProTable组件
import { ProTableProvider } from '@ant-design/pro-table'
import { ProFormProvider } from '@ant-design/pro-form'
  1. 类似@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>
  )
}

asyncguo avatar Jul 25 '22 06:07 asyncguo

像你这种情况,通常都会基于 proTable... proForm... 并结合项目的需求再抽象封装一层。

drizzlesconsin avatar Jul 25 '22 10:07 drizzlesconsin

像你这种情况,通常都会基于 proTable... proForm... 并结合项目的需求再抽象封装一层。

二次封装组件无疑是最好的选择,而类似proTable这种多配置项的非原子组件,在发布break changes更新版本时,对于存量使用的地方更改起来很是不方便,而Provider这种方式感觉会更方便点

asyncguo avatar Jul 25 '22 13:07 asyncguo

提供了 ProConfigProvide,不过功能较少,你可以来写pr补充一下

chenshuai2144 avatar Dec 22 '22 07:12 chenshuai2144