ReactJS でビューポート/ウィンドウの高さを取得する 質問する

ReactJS でビューポート/ウィンドウの高さを取得する 質問する

ReactJSでビューポートの高さを取得するにはどうすればいいですか?通常のJavaScriptでは

window.innerHeight()

しかしReactJSを使っていて、この情報をどのように取得するのか分かりません。私の理解では

ReactDOM.findDomNode()

作成されたコンポーネントに対してのみ機能します。ただし、ウィンドウの高さを指定できるdocumentまたは要素の場合はそうではありません。body

ベストアンサー1

フックの使用 (React 16.8.0+)

フックを作成しますuseWindowDimensions

import { useState, useEffect } from 'react';

function getWindowDimensions() {
  const { innerWidth: width, innerHeight: height } = window;
  return {
    width,
    height
  };
}

export default function useWindowDimensions() {
  const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());

  useEffect(() => {
    function handleResize() {
      setWindowDimensions(getWindowDimensions());
    }

    window.addEventListener('resize', handleResize);
    return () => window.removeEventListener('resize', handleResize);
  }, []);

  return windowDimensions;
}

その後、このようにコンポーネントで使用できるようになります

const Component = () => {
  const { height, width } = useWindowDimensions();

  return (
    <div>
      width: {width} ~ height: {height}
    </div>
  );
}

動作例

元の回答

React でも同じで、window.innerHeight現在のビューポートの高さを取得するために使用できます。

ご覧のようにここ

おすすめ記事