【发布时间】:2016-10-25 14:05:08
【问题描述】:
我的“主要”组件中有以下render:
import ComponentA from './component-a.js';
import ComponentB from './component-b.js';
const App = React.createClass({
render: function() {
return (
<div>
<ComponentA/>
<ComponentB/>
</div>
);
}
});
ComponentA 需要一个 css 文件。所以我在component-a.js 中有以下内容:
require ('./component-a.css');
const ComponentA = React.createClass({
render: function() {
return (
<div>component a</div>
);
}
});
… 而ComponentB 没有。所以我在component-b.js 中有以下内容:
const ComponentB = React.createClass({
render: function() {
return (
<div>component b</div>
);
}
});
ComponentA(仅)需要的css文件是:
div {
width: 100px;
height: 30px;
border: 1px solid red;
}
即使只有ComponentA 需要css,ComponentB 也会受到影响。这是在浏览器中呈现的内容:
页面中的所有div元素似乎都受到ComponentA所要求的样式的影响。这包括后续组件ComponentB 的div (不 需要css 样式)以及包含ComponentA 和ComponentB 的div 和另一个div 由 React 添加:
css文件不只影响需要它们的组件吗?如果不是,并且它们实际上是全局的,那么从特定组件中要求css文件的语义到底是什么?除了使用内联样式并将所有内容放在 JS 代码中之外,有没有办法分隔 CSS 文件,以便它们只影响需要它们的 React 组件?如果要使用类名来实现该效果,则无法保证当一个组件与其他组件一起使用时类名是唯一的。
【问题讨论】:
-
React 以 HTML 格式呈现组件,因此您的 HTML 文件中链接的任何样式表都会影响呈现的组件