【问题标题】:Specify props of a component imported from a UI library in styled-componennts在 styled-components 中指定从 UI 库导入的组件的 props
【发布时间】:2021-04-06 14:49:34
【问题描述】:

我正在使用grommetstyled-components。我有几个地方使用grommet 提供的组件并设置了一些类似的道具。我想使用grommet 导出的组件创建一个styled-components,并使用styled-components 指定设置的道具。

这可以使用styled-components 吗?以下是我正在尝试使用的。

import { Header } from 'grommet'
import styled from 'styled-components'

const AppHeader = styled(Header)`
    background="brand"
    height="80px"
    pad="small"
`
export default AppHeader

backgroundheightpad 未在 AppHeader 上设置。我只看到示例中设置了实际的 CSS 道具。所以,我想问一下上面的是否可行?

【问题讨论】:

    标签: styled-components grommet


    【解决方案1】:

    是的。绝对可以将样式组件与索环组件一起使用。

    在您的示例中,您提供给 styled-components 的语法不起作用,因此遵循推荐的语法结构应该可以做到以下几点:

    const AppHeader = styled(Header)`
      background: #000;
      height: 80px;
      padding: 30px;
    `;
    

    我还注意到您正在尝试使用索环的道具,例如pad,这不适用于样式组件,因为它接受 CSS 而不是索环道具,在这种情况下,简单的方法就是使用 @ 987654325@ 应该可以。

    关于您尝试引用的 brand 颜色,brand 未使用 CSS 颜色定义,因此同样无法使用。如果您想使用brand 颜色,您可以在定义样式组件时始终引用主题颜色,如下所示:

    const AppHeader = styled(Header)`
      background: ${({ theme }) => theme.global.colors.brand};
      height: 80px;
      padding: 30px;
    `;
    

    这是一个完整的(工作)代码示例:

    import React from "react";
    import { render } from "react-dom";
    import styled from "styled-components";
    
    import { grommet, Header, Heading, Grommet, Paragraph } from "grommet";
    
    const AppHeader = styled(Header)`
      background: ${({ theme }) => theme.global.colors.brand};
      height: 80px;
      padding: 30px;
    `;
    
    const App = () => (
      <Grommet theme={grommet}>
        <AppHeader pad="small">
          <Heading level={3}>
            <strong>Hello World</strong>
          </Heading>
          <Paragraph>Hello from a Grommet page!</Paragraph>
        </AppHeader>
      </Grommet>
    );
    
    render(<App />, document.getElementById("root"));
    
    

    【讨论】:

    • 我想我们只能在 styled-components 中设置 css 属性。但我的主要麻烦是能够在设置您在答案中显示的 css 时访问主题变量。因此,我将其标记为正确答案。谢谢。
    猜你喜欢
    • 2019-03-14
    • 2021-05-25
    • 2021-09-22
    • 2020-01-16
    • 2018-04-27
    • 2021-09-19
    • 2020-06-07
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多