React Use主题变量,在样式组件中进行样式设置

问题描述 投票:0回答:1

目前,我正在尝试使用样式化组件和样式化系统来制作主题。我用所需的所有样式(theme.js),带有样式化的组件和变体的button.jsx创建了一个主题。

在我的theme.js中是颜色,并且有一个带有颜色的模式(深色)。

//default
500: "#139ebe",

//modes
modes: {
  dark: {
    blues: {
      500: "white"
    }
  }
}

这些已合并到一个主题对象。

const getTheme = mode =>
  merge({}, theme, {
    colors: get(theme.colors.modes, mode, theme.colors)
  });

在黑暗模式下,它应该从黑暗模式下获得颜色。当没有任何模式时,它将获得正常的颜色。

通过道具我可以访问当前主题(请参见button.jsx第77行)。

const Button = props => {
  console.log("Current theme: ", props.theme.colors.blues[500]);
  return <ButtonElem as="button" {...props} />;
};

在控制台中,如果您删除了暗模式,则可以看到颜色变量发生了变化。我需要按钮样式的效果相同。我如何从我的

中的主题提供者访问正在使用的主题
const ButtonElem = styled("div")(

Demo:

在codesandbox中打开控制台,您将看到当前主题。删除暗模式并保存,您将看到更改。https://codesandbox.io/s/blue-cache-bp9ns?fontsize=14

reactjs styling styled-components theming
1个回答
0
投票

这是将道具传递给变体的正确方法

const type = props => (variant({

}));
© www.soinside.com 2019 - 2024. All rights reserved.