我想
我想要实现的伪代码
import 'common.css'
function MyComponent() {
if (somethingHappened) {
style = extendOverrideStyle(styleClassFromCSS)
} else {
style = styleClassFromCSS
}
return (
<SomeComponent className=style />
)
}
我该怎么做?
更新: 在答复中查看我的回答,以了解我最终是如何做到的。
答案 0 :(得分:1)
只需在CSS文件中创建一个新类来覆盖旧CSS。 然后按照
function MyComponent() {
return (
<div className={somethingHappened ? 'firstclass overwriteclass' :
'firstclass'}>
<SomeComponent />
</div>
)
}
答案 1 :(得分:0)
您不能直接在Component中设置样式。 首先,您需要将样式作为属性传递给组件,并在该组件内设置样式
<SomeComponent prop_class={your_style}/>
在SomeComponent内部
<div className={this.props.your_style}>
</div>
答案 2 :(得分:0)
答案(实现方式与@Rohan的回答有点类似):
main
CSS类是基本样式规则,.main.somethingHappened
对其进行扩展/覆盖。 main
CSS类最初应用于myComponent
。当somethingHappened
为true时,将两个CSS类main somethingHappened
应用于myComponent
。
mystyle.css
.main {
...
margin: 10px;
}
.main.somethingHappened {
margin: 5px
padding: 5px;
}
myComponent.js
(使用类名库。请检查@Rohan的方法以避免类名库。)
import 'common.css'
import classnames from 'classnames'
function MyComponent() {
let didItHappen = ...
return (
<SomeComponent
className={classnames('main', {'somethingHappened': didItHappen})}
/>
)
}