Reactでのレスポンシブ対応
Page content
Reactでメディアクエリを設定しレスポンシブ対応。
cssで通常のmedia query
通常レスポンシブ対応は、cssでmediaクエリを設定し、ページ幅に応じて表示するコンテンツを変えることで対応する。
以下の例だと、普段はsmartphone_areaのクラスを持つコンテンツを表示し、pc__areaのクラスを持つコンテンツを非表示とする。
横幅が767px以上になったら、smartphone_areaのクラスを持つコンテンツを非表示とし、pc__areaのクラスを持つコンテンツを表示する。
.smartphone__area {
display: block;
}
.pc__area {
display: none;
}
@media screen and (min-width: 767px) {
.smartphone_area {
display: none;
}
.pc__area {
display: block;
}
}これを使って、以下のように書くと、横幅によって一方のdivコンテンツだけが表示されるため、幅にあった表示のコンテンツを提供できる。
<div class="smartphone__area">
<SmartPhoneContents />
</div>
<div class="pc__area">
<PCContents />
</div>Reactでのmedia query
Reactでは、npmのreact-responsiveパッケージを使うことで簡単にレスポンシブの動作を実現できる。
まずpackage-jsonのあるディレクトリでreact-responsiveをインストール。
$ npm install react-responsive --saveこれでpackage-jsonに追加されます。
あとはファイルにimportして、以下のように使うだけ。
import MediaQuery from "react-responsive";
<MediaQuery query="(max-width: 767px)">
<SmartPhoneContents />
</MediaQuery>
<MediaQuery query="(min-width: 767px)">
<PCContents />
</MediaQuery>
実際の動作
プロ野球成績表は、以下のように、スマホから見た場合は、チーム名や選手名で改行して表示するようにしている。




