ant-design / ant-design

An enterprise-class UI design language and React UI library
https://ant.design
MIT License
92.4k stars 49.62k forks source link

ConfigProvider封装并推送到npm仓库后生效异常 #45203

Closed liukai3586 closed 1 year ago

liukai3586 commented 1 year ago

Reproduction link

https://gitee.com/dik-sxqi/test-theme.git

Steps to reproduce

步骤1

src/App.tsx分别用下面两种方式引入

  引入方法1
import {ProConfigProvider} from 'jh-components'
  引入方法2
import ProConfigProvider from "./ProConfigProvider";

What is expected?

推送到npm仓库或本地的ProConfigProvider 包裹应该不论是用 封装过的ProButton 还是 直接使用Button都应该生效主题设置

What is actually happening?

  1. 当使用方法1引入时第一个按钮的主题不生效,第二个按钮生效
  2. 当使用方法2引入时第一个按钮生效,第二个按钮不生效
Environment Info
antd 5.9.2
React ^18.2.0
System win11
Browser 谷歌

ProConfigProvider和 ProButton 说明

src/ProConfigProvider.tsx中就是ProConfigProvider组件的完整代码 ProButton 也是简单的封装(如下)后和ProConfigProvider一起推送到了npm仓库

<Button {...props} loading={needLoading && loading}></Button>

liukai3586 commented 1 year ago

https://gitee.com/dik-sxqi/jh-components.git 这是 jh-components 组件库的源码,使用dumi开发的

Wxh16144 commented 1 year ago

看了你的 test-theme 这个 repo, 很显然是两个组件用的不是同一个 Provider 了,解决方案是把你 jh-components 的生产依赖修改为前置依赖~

MadCcc commented 1 year ago

自行确认一下组件库和 app 的 antd 版本以及引入 ConfigProvider 的实例是否一致,这个问题需要三方库去解决

liukai3586 commented 1 year ago

好的 已经解决了,感谢