【发布时间】:2021-09-19 02:33:57
【问题描述】:
我有一个父组件和一个子组件。我将子组件导入父组件并在那里使用它。下面是子组件。
import styled from "styled-components";
const HeaderContainer = styled.h1``;
const Header = () => <HeaderContainer>This is Header</HeaderContainer>;
export default Header;
如您所见,它是一个简单的组件,它只呈现文本。
父组件在下面。
import "./styles.css";
import Header from "./header";
import styled from "styled-components";
const Main = styled.div`
${Header} {
background-color: "red";
}
`;
export default function App() {
return (
<Main className="App">
<Header />
</Main>
);
}
我正在导入 Header 并在 JSX 中使用它。我想要的是从父组件中设置 Header 组件的样式。我使用 styled-components 尝试了以下样式,但它无法以某种方式工作。
const Main = styled.div`
${Header} {
background-color: "red";
}
`;
这里是代码框。
https://codesandbox.io/s/dreamy-brown-w3bbs?file=/src/App.js:0-277
我怎样才能完成这项工作,或者如果您有更好的想法,请分享。
【问题讨论】:
-
"index.js:27 Header 不是样式化组件,不能通过组件选择器引用。有关详细信息,请参阅styled-components.com/docs/…。"
-
@jonrsharpe 我刚刚更新了代码框。我忘了让它成为样式组件。
-
但是你不是指
HeaderContainer,你指的是Header,所以仍然显示相同的警告。阅读控制台消息和链接到的文档。 -
@jonrsharpe 在文档中,两个组件的样式都在同一个文件中,因此我们可以引用该组件。在我的情况下,标题组件位于不同的文件中。它有一个 HeadeContainer 样式,我在 JSX 中使用它。但我将组件导出为页眉。我在父组件中导入为 Header 而不是 HeaderContainer。所以我不能将它称为 HeaderContainer,因为它是未定义的。我只能将其称为 Header。
-
我并不是说你应该指代 HeaderContainer,必然只是那个 Header,你实际上指的组件,不是样式化组件。这就是警告告诉你的内容,大概也是它不起作用的原因。
标签: javascript html css reactjs styled-components