質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

2304閲覧

同一のクラス名が複数あるcssをReactで制御するには?

ppphysiccc

総合スコア20

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2019/03/07 07:38

編集2019/03/07 07:40

お世話になります。
React.jsを学習中なのですが、表題のように同一のクラス名が複数あるcssをjsxで制御するにはどのようにしたらよいでしょうか。
そもそも被らないようにするのが前提かと思いますが、かぶった場合において制御する方法を知りたいです。

例:

common.css

css

1.all { 2  共通; 3} 4 5.test-contents { 6  中身1; 7}

common2.css

css

1.test-contents { 2  中身2; 3}

上記の2ファイルがあり、どちらも中に.test-contentsクラスがあるとします。
.allクラスは全体で使用したいので共通としてindex.jsで読み込みます。

js

1import './css/common.css';

TESTコンポーネントでcommon2.cssの.contentsを使用したいとします。

jsx

1import './css/common2.css'; 2 3class TESTComponent extends React.Component { 4 render() { 5 return ( 6 <div className="test-contents"></div> 7 ); 8 } 9}

このようにすると当然contentsはindex.jsとTESTComponentのtest-contentsが読み込まれるのでmultipleとなり、common.cssとcommon2.cssが読み込まれ、レイアウトが崩れてしまう結果となってしまいます。
TESTComponentで

jsx

1import COMMON2 from '../css/common2.css'; 2 3class TESTComponent extends React.Component { 4 render() { 5 return ( 6 <div className={COMMON2.test-contents}></div> 7 <div className={COMMON2.testContents}></div> 8 <div className={COMMON2['test-contents']}></div> 9 ); 10 } 11}

などのように試行錯誤してみたのですが、どれもうまくいきませんでした。
console.log(COMMON2);をしてみると結果は {} なのでそもそもCOMMON2を読み込むことができていないようです。

そもそも設計的によろしくないとは思うですが、上記のように使用する場合にはどのようにして行えばよいかご教示いただけませんか?
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

CSS Modulesとしての変換(指定したCSSのクラスを変換する)には、いくつかのローダーとその設定を組み合わせる必要があります。ここなどが参考になるかもしれません。

投稿2019/03/07 08:05

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ppphysiccc

2019/03/07 08:21

ありがとうございます! このCSS Modulesを行った後、上記対応 import COMMON2 from '../css/common2.css'; を行わなければならないということですかね。。 まだまだ理解が浅いですが、一度試してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問