Ant Design全局汉化为什么要引入这个包?-灵析社区

Midclimateeee

这算是一个 设计规范 和 `支持粒度` 的问题,通过 `ConfigProvider` 注入的国际化只负责控制 `antd` 这一层的国际化,没有集成组件依赖的`包`中的国际化,所以需要由用户手动引入这部分。如果看过 `antd` 的源码,那么你会发现,`antd`中的部分组件其实也只是封装了另一个库(`react-component`)中的组件,具体实现并不在 `antd` 这里就用 `DatePicker` 举例,它是基于 react-component 中的 `picker` 实现的,包名叫 `rc-picker`,而 `rc-picker` 中日期相关的处理都是通过 `dayjs` 这个库来完成的,包括`国际化` 这里就存在如下依赖关系 `DatePicker -> rc-picker -> dayjs`,从设计上来说,DatePicker 只需要把 rc-picker 当成一个黑盒,不需要关注里面的实现,不管 rc-picker 选择用 dayjs 还是 moment,亦或者其他的日期工具库,`antd` 都无需关心。 换个说法,假设 antd 集成了 dayjs,那么如果后续 rc-picker 将 dayjs 替换成了其他库,那么 antd 也得跟着改,这种`隐晦的依赖关系`产生的`耦合`会带来不小的维护成本。 至于这个问题,可以提供一个可复现的在线demo,我测了下是可以的 > > `另外还有一个问题想请教,为什么这个ConfigProvider直接包裹在App外面不可以,要包在RouterProvider或者Provider里才生效。`

阅读量:1

点赞量:0

问AI