【问题标题】:styled(MyComponent) renders MyComponent but without additional styles [duplicate]styled(MyComponent) 呈现 MyComponent 但没有其他样式 [重复]
【发布时间】:2020-06-04 21:37:25
【问题描述】:

我有 2 个使用样式组件的 React 组件。第一个叫做 Div 的只是一个简单的 div (仅用于示例):

import React from "react";
import styled from "styled-components";

export default function Div(props) {
  return <StyledDiv>{props.children}</StyledDiv>;
}

const StyledDiv = styled.div`
  border: 10px solid red;
`;

它正确渲染了带有红色边框的div

然后我尝试使用 styled-components styled() 函数在另一个(称为App)中呈现这个组件:

import React from "react";
import styled from "styled-components";

import Div from "./Div";

export default function App() {
  return (
    <StyledApp>
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
    </StyledApp>
  );
}

const StyledApp = styled(Div)`
  color: red;
`;

这里的结果是带有红色边框的div,其中包含我的h1h2,但color: red 没有考虑在内。我的标题一直是黑色的。

这是codesandbox的链接。

我是否遗漏了 styled() 函数中的某些内容?

【问题讨论】:

    标签: javascript reactjs styled-components


    【解决方案1】:

    你需要传递className 属性。

    styling normal React components

    如果您使用styled(MyComponent) 表示法并且MyComponent 不呈现传入的className 属性,则不会应用任何样式

    export default function Div({ className, children }) {
      return <StyledDiv className={className}>{children}</StyledDiv>;
    }
    

    【讨论】:

    • 你自己之前回答过这个问题,应该把它标记为重复:stackoverflow.com/questions/59756648/…
    • 是的,你是对的,有时候我只是喜欢比这个过程更快地回答,对不起。
    • 是的,但这样做你就违背了它的目的。我知道有时虽然解决方案相同但解决方法不同,在这种情况下可以回答,但这里的代码完全相同
    猜你喜欢
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2019-10-16
    • 2016-02-02
    • 2021-04-09
    • 1970-01-01
    • 2020-02-10
    • 2018-12-31
    相关资源
    最近更新 更多