styled(MyComponent) 渲染MyComponent,但没有额外的样式[重复]。

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

我有2个React的组件是使用styled-component。第一个叫 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 的红色边框。

然后我试着在另一个组件中渲染这个组件(叫做 App)使用stylled-components styled() 功能。

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 镶红边 h1h2color: red 是没有考虑到。我的标题一直是黑色的。

这里是链接到 代码和盒子.

我是不是遗漏了什么?styled() 函数?

javascript reactjs styled-components
1个回答
1
投票

你需要通过 className 道具。

风格化普通React组件.

如果您使用 styled(MyComponent) 符号和 MyComponent 不会使传入的 className那么就不会应用任何样式.

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

Edit naughty-snowflake-t8bil

© www.soinside.com 2019 - 2024. All rights reserved.