ant-design / antd-style

css-in-js library with antd v5 token system
https://ant-design.github.io/antd-style/
MIT License
219 stars 35 forks source link

🧐[问题]组件里面通过createInstance创建的customToken和包在最外层的ThemeProvider的customToken可以融合吗? #69

Open kevinffk opened 1 year ago

kevinffk commented 1 year ago

🧐 问题描述

1、同时定义ThemeProvider的customToken,内容为a="ThemeProvider.custom"。 2、组件内部定义通过createInstance定义了customToken,内容为a="createInstance.custom" 3、组件在使用时 3.1 如果外部没有包ThemeProvider的话,在组件中createStyles里面获取到的a内容为a="createInstance.custom"。 3.2 如果外部有包ThemeProvider的话,在组件中createStyles里面获取到的a内容为a="ThemeProvider.custom"。 3.3 如果外部有包ThemeProvider的话,但ThemeProvider没有传递a="ThemeProvider.custom",则在组件中createStyles里面获取到的a内容为undefined,请问ThemeProvider的customToken和组件内容的createInstance里面的customToken可以融合吗?这样看起来是互斥的。

💻 示例代码

export default () => {
  return (
    <>
      <ThemeProvider customToken={{ 'a': 'ThemeProvider.custom' }}>
        <ASDiv/>
      </ThemeProvider>
      <hr />
    </>
  );
};
interface LogoListToken {

}

const { createStyles } = createInstance<LogoListToken>({
  customToken: {
    'a': 'createInstance.custom',
  },
});

const useStyles = createStyles(({css, cx, token}) => {
  console.log('a', token['a']);

  return {
     container: css`
          height: 300px;
      `
 }
}

🚑 其他信息

外部有ThemeProvider时 image

外部没有ThemeProvider时 image

外部有ThemeProvider时,但缺少customToken image

kevinffk commented 1 year ago

看起来和这个问题有点像,https://github.com/ant-design/antd-style/issues/25, 被全量覆盖了,我本地的antd-style版本是3.2.1 @arvinxx

arvinxx commented 1 year ago

奇怪,之前没修复成功?我看看哈