javascript - styled(MyComponent) 呈现 MyComponent 但没有其他样式
问题描述
我有 2 个使用样式组件的 React 组件。第一个称为Div
render 只是一个简单的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
带有红色边框的 a 。
App
然后我尝试使用 styled-componentsstyled()
函数在另一个(称为)中呈现这个组件:
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
带有红色边框的 a,其中包含 my h1
andh2
但未color: red
考虑在内。我的标题保持黑色。
这是代码框的链接。
我是否错过了该styled()
功能的某些内容?
解决方案
你需要通过className
道具。
请参阅设置普通 React 组件的样式。
如果您使用
styled(MyComponent)
符号并且MyComponent
不渲染传入的className
道具,则不会应用任何样式。
export default function Div({ className, children }) {
return <StyledDiv className={className}>{children}</StyledDiv>;
}
推荐阅读
- ansible - 在 Ansible Jinja 模板中,如何转义双引号内的单引号?
- spring - 为什么 Spring 会创建这个太长的唯一 ID 并导致 DDL 错误?
- javascript - React 在数组上创建自己的函数
- apache-spark - Spark SQL中缓存机制的区别
- python - 从python 3中的实例变量中获取参数
- windows - 在 Windows 上使用 gcc/clang 内置函数
- r - 如何处理杂乱的数据 - 变量未标记为缺失
- node.js - res.status 和 res.send 请求发生两次
- android - Xamarin Android:如何在回收站视图中更改选定行的颜色
- python - 填充大量/大块时间序列数据