【发布时间】:2016-12-16 14:12:32
【问题描述】:
在项目中使用react-css-modules 时,我发现自己正在尝试做一些可以简化为的事情:
import React from 'react'
import CSSModules from 'react-css-modules'
import ChildComponent from './ChildComponent.jsx'
import styles from './ParentComponent.css'
class ParentComponent extends React.Component {
render() {
return (
<div>
<p styleName='parentComponent'>This is rendered in ParentComponent</p>
<ChildComponent styleName='some-name' /> // this style is not applied
</div>
)
}
}
export default CSSModules(ParentComponent, styles)
CSS 类some-name 在ParentComponent.css 中定义,包含将ChildComponent定位在ParentComponent 内的规则。
ChildComponent 实现如下所示:
import React from 'react'
import CSSModules from 'react-css-modules'
import styles from './ChildComponent.css'
class ChildComponent extends React.Component {
render() {
return (
<div> // expected to have this div decorated with 'some-name' class
<p styleName='childComponent'>This is rendered in ChildComponent</p>
<button styleName='childComponent'>This is rendered in ChildComponent</button>
</div>
)
}
}
export default CSSModules(ChildComponent, styles)
我希望在ChildComponent(包装)上呈现的第一个元素中收到some-name 类中定义的 CSS,但这并没有发生,“some-class”只是被忽略了。
我可以通过添加额外的包装并对其应用样式来解决此问题,但如果可能的话,我想避免这种情况:
// in ParentComponent do this instead
render() {
return (
<div>
<p styleName='parentComponent'>This is rendered in ParentComponent</p>
<div styleName='some-name'>
<ChildComponent />
</div>
</div>
)
}
希望我已经很好地解释了用例和问题,所以任何关于如何做到这一点的建议将不胜感激。
【问题讨论】:
-
我有同样的用例。在github.com/gajus/react-css-modules#loops-and-child-components 中应用最低代码块也无济于事。包装 ChildComponent 不应该是要走的路。如何解决?