【React】リアルタイムで画面サイズの変更を検知・値を取得する

タイトルにある通り、React で画面サイズが変わった事をリアルタイムで検知し、かつ画面の幅・高さをその都度取得する方法についてです。

参考にさせていただいた…というか、コードをまるっと使用させていただいたサイトはこちら。

Reactで画面サイズを取得するHooks | RyotArchLog
https://ryotarch.com/javascript/react/get-window-size-with-react-hooks/

まさに、わたしが実装したいと思ったコードそのものでした。

 

サンプルコードは下記のとおりです。

import React, { useState, useEffect } from 'react';

const Example = props => {
  const getWindowDimensions = () => {
    const { innerWidth: width, innerHeight: height } = window;
    return {
      width,
      height
    };
  } 
  const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());
  useEffect(() => {
    const onResize = () => {
      setWindowDimensions(getWindowDimensions());
    }
    window.addEventListener('resize', onResize);
    return () => window.removeEventListener('resize', onResize);
  }, []);

  return (
    <div>
      ......
    </div>
  );
}
export default Example;

私はコンポーネント内に実装しました。
上記コードでは、画面サイズが変わるたびに statewindowDimensions にリアルタイムで反映され、幅、高さの値はそれぞれ windowDimensions.widthwindowDimensions.height で取得できます。

こちらを使えば、例えば画面の幅が 800px 以下になったら、指定した要素の縦幅を小さくする等の処理を行うことができます。
私の場合は、画面のサイズによって PC 用のステッパーとモバイル用のステッパーを切り替えるという処理を行っています。

 

以上、React で画面のサイズの変更をリアルタイムで検知し、幅・高さをその都度取得する方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG