我在create-react-app上构建我的react应用程序。我希望每个组件都有本地css。我正在计划使用css模块但这些是问题
如果我使用css模块
这是我的scss文件之一
$scalel: 1.7vmin;
.navbar-side {
position: absolute;
background: rgba(255,255,255,0.15);
width: 17 * $scalel;
top: 6.2 * $scalel;
padding-bottom: 2 * $scalel;
.tessact-logo {
width: 50%;
height: 12 * $scalel;
background: url('/public/images/logo.png');
background-repeat: no-repeat;
background-position: center center;
background-size: contain;
margin-left: 25%;
}
.navbar-item {
padding: 0.8 * $scalel;
transition: all 0.2s ease;
cursor: pointer;
padding-left: 3 * $scalel;
&:hover {
background: rgba(255,255,255,0.15);
}
&.active {
background: rgba(255,255,255,0.25);
}
.navbar-item-inside {
display: none;
}
}
}
*How can use classname={style.navbar-item}? key is navbar-item is in nest.*
另外如果我不想使用css模块,有什么办法吗?在其中一个项目中,我看到有人像这样隔离了css
import c from './Reviews.styl'
<div className={c.container}>
<ReviewSearch
assignIsOpen={this.state.assignIsOpen}
toggleAssign={this.toggleAssign}
selectedRows={this.props.selectedRows}
onSubmitProcess={this.onSubmitProcess}/>
<ReviewTable
isLoading={this.props.isLoading}
items={this.props.list}
selectedRows={this.props.selectedRows}
onRowSelection={this.onRowSelection}
authToken={this.props.auth_token}
setCurrentItem={this.setCurrentItem}/>
</div>
样式文件是
:local(.container)
display block
width 100%
.control-container
display flex
align-items center
.control-label
width 120px
.control
flex 1
& + .control-container
margin-top 30px
使用styl文件而不是css。我喜欢这种方式,因为在这里不需要在所有子div中使用style.classname。我怎样才能做到这一点?
答案 0 :(得分:3)
自提出此问题以来,发生了很多变化。自react-scripts@2.0.0
起,Create React App已有一段时间支持开箱即用的 css模块和 scss ,而不会弹出。
https://create-react-app.dev/docs/adding-a-css-modules-stylesheet
您要做的就是将任何文件从somestyle.css
重命名为somestyle.module.css
,现在它将像一个CSS模块一样。
您可以通过将someStyle.scss
重命名为somestyle.module.scss
来以相同的方式使用scss
答案 1 :(得分:1)
我建议使用classnames。它是一个库,您可以通过它从css文件将css导入到组件中,然后像下面一样使用它:
import styles from './your.css'
import cn from 'classnames/bind'
const cx = cn.bind(styles)
<div className={cx('myDiv')}/>
答案 2 :(得分:0)
对CSS模块的支持一直在制作create-react-app,它应该在2.0 beta(https://github.com/facebookincubator/create-react-app/issues/3815)