これで問題はすぐに言えることですが、スタイルシートAの後にスタイルシートBがロードされている(または考えていた)状況があるため、Aのスタイルをオーバーライドする必要がありますカスケーディングの、実際にはAの前にブラウザにロードされています。順序が間違っています。リアクションコンポーネントのスタイリングがグローバルスタイリングでオーバーライドされています
私は次のように単純なコンポーネント構造に反応があります。では
App
> Header
> Home
> Footer
私の私は文の基本的な順序を持っている「index.js」:ここで
import './assets/theme/theme_specific/scss/style.scss';
render(
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRoute getComponent={lazyLoadComponent(Home)} />
<Route path="/resume" getComponent={lazyLoadComponent(Resume)} />
</Router>,
document.getElementById("app")
);
はApp.jsで構造です:
class App extends React.Component {
render() {
return (
<div>
<Header />
{this.props.children}
<Footer />
</div>
);
}
}
そしてHeader.jsの上部に私は次があります。
.scssファイルを処理していますimport './Header.scss';
ザ・WebPACKのローダは次のとおりです。
test: /\.scss$/,
loader: 'style!css?sourceMap!resolve-url!sass?sourceMap',
私はどこでも使用されて何の!important
がないことを確認しました、そしてスタイリング自体はまったく同じです。
「Header.scss」がFIRSTに読み込まれ、「style.scss」SECONDが読み込まれています。言い換えれば、 'style.scss'は 'Header.scss'のスタイルをオーバーライドしています。 Chromeのインスペクタの[計算された]タブでは、これが正しいことが確認されます。
ここで何が起こっているのか誰も知りませんか?
なぜ上書きされますか?あなたのscssファイルで非常に一般的なセレクタを使用していますか? – azium
'style.scss'のインポートを' App.js'よりも上に移動します。 'App.js'がすべてサブツリーでインポートされ、' Header.js'がインクルードされ、スタイルがインポートされます。 –