【发布时间】:2020-12-30 10:28:37
【问题描述】:
我在 next.js 中创建了一个带有组件样式的 Container 组件。 当我在整个网站中声明使用此容器组件时,我想为其添加一个 className 并根据其使用的上下文对其进行主观样式设置。
这是我的 Container 组件的示例:
const Container = (props) => (
<>
<div className="container">
{props.children}
</div>
<style jsx>{`
.container{
width: 100%;
max-width: 1200px;
margin: 0 auto;
}
`}</style>
</>
)
export default Container;
所以,我想给它的最大宽度为 1200 像素,并以自动边距居中。没问题,我已经做到了。
现在,我计划在我的网站页眉中使用这个组件。但在标题的情况下,我希望 Container 组件是一个 flexbox:
import Container from './Container'
const Header = (props) => (
<>
<header>
<Container className="header-col">
<div>
<h1>{props.title}</h1>
</div>
<nav>
<ul>
{/* Navigation items */}
</ul>
</nav>
</Container>
</header>
<style jsx>{`
.header-col{
display: flex;
justify-content: space-between;
}
`}</style>
</>
)
export default Header;
当我查看该站点时,我注意到我在标题中为 Container 组件指定的 flexbox 样式不存在。
我期待 className 生效,并允许我添加其他样式。
我相信这与认为 className 不是类名而是道具有关。但是,我想通过在组件上创建样式继承来保持我的代码干燥。
我该怎么做?
感谢您的帮助!
【问题讨论】:
标签: css reactjs next.js styles