React Hook 'useWindowSize'


需求

  • 根据页面 size 展示不同的组件

实现

const getSize = () => {
  return window.innerWidth > 1000 ? "large" : "small";
};
const useWindowSize = () => {
  const [size, setSize] = useState(getSize());
  useEffect(() => {
    const handler = () => {
      setSize(getSize());
    };
    window.addEventListener("resize", handler);
    return () => {
      window.removeEventListener("resize", handler);
    };
  }, []);
  return size;
};

使用

const Demo = () => {
  const size = useWindowSize();
  return size === "small" ? <SmallComponent /> : <LargeComponent />;
};

关联知识点

  • 事件监听,移除事件监听
  • useEffect 里的 return

文章作者: せいい
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 せいい !
  目录