在样式化组件 UI 库上使用 ThemeProvider

Posted

技术标签:

【中文标题】在样式化组件 UI 库上使用 ThemeProvider【英文标题】:Using ThemeProvider on Styled-Components UI Library 【发布时间】:2021-12-07 10:46:01 【问题描述】:

我正在创建一个使用 Styled-components 的 UI 库,并且我有一个这样的组件

const Title = styled('div')`
  color: $( theme ) => theme.sender.color;
  font-size: 0.9rem;
  padding: 0.5rem 0.3rem 0.5rem;
  span 
    color: $( theme ) => theme.sender.color;
    background: $( theme ) => theme.sender.botBackground;
    border-radius: 0.2rem;
    padding: 0.2rem 0.4rem;
    text-transform: uppercase;
  
`;

我需要在另一个项目中实现,从我的 UI 库中导入组件。我已经完成了构建库的所有过程,并使用 rollup 和 babel 将其设置为用作库。

<ThemeProvider theme=customTheme>
    <Title />
</ThemeProvider>

但是,当我尝试在项目中使用 ThemeProvider 时,theme 道具没有被传递,我收到一个错误,因为它正在尝试获取 sender来自未定义

你知道为什么会这样吗?

【问题讨论】:

【参考方案1】:

更简洁的实现可能如下所示:

const Title = styled('div')`
  color: $ props => props.sender.color;
`;

<ThemeProvider theme=defaultMessageBubbleTheme>
    <Title />
</ThemeProvider>

【讨论】:

以上是关于在样式化组件 UI 库上使用 ThemeProvider的主要内容,如果未能解决你的问题,请参考以下文章

如何在材质 UI 的反应中使用排版作为样式化组件

在样式化组件中使用 Material-ui 主题

如何在样式化组件中访问 Material-ui 的主题

推荐 9 个样式化组件的 React UI 库

使用 React.js 和 Material-UI 简化样式化的组件媒体查询

如何使用 react-testing-library 测试包装在 withStyles 中的样式化 Material-UI 组件?