首页  >  文章  >  web前端  >  如何在浏览器调整大小时重新渲染 React 视图:jQuery 与以 React 为中心的方法?

如何在浏览器调整大小时重新渲染 React 视图:jQuery 与以 React 为中心的方法?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-19 19:37:01766浏览

How to Re-render React View on Browser Resize: jQuery vs React-Centric Approach?

使用 React 在浏览器调整大小时重新渲染视图

在给定的 React 应用程序中,目标是在以下情况下重新渲染视图:浏览器窗口的大小已调整。这可以动态调整 UI 元素,例如类似 Pinterest 的布局中块的定位。

使用窗口大小调整库:

一种常见的方法是按照问题中的建议,使用 jQuery 的窗口调整大小事件。通过添加以下代码,您可以在调整窗口大小时重新渲染组件:

$( window ).resize(function() {
  // Re-render the component
});

React-Centric Approach:

但是,有一个更多“React”方法使用 useEffect Hook 来实现此目的。这个 Hook 允许您在组件中执行副作用,例如监听窗口事件。要使用 useEffect 来调整窗口大小,您可以像这样定义一个自定义 Hook:

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

function useWindowSize() {
  const [size, setSize] = useState([0, 0]);
  useEffect(() => {
    function updateSize() {
      setSize([window.innerWidth, window.innerHeight]);
    }
    window.addEventListener('resize', updateSize);
    updateSize();
    return () => window.removeEventListener('resize', updateSize);
  }, []);
  return size;
}

然后您可以在组件中使用此 Hook 来访问窗口大小并在窗口大小发生变化时触发重新渲染:

import React, { useState, useEffect } from 'react';
import { useWindowSize } from './useWindowSize';

function MyApp() {
  // ...
  const [windowSize, setWindowSize] = useWindowSize();

  useEffect(() => {
    // Re-render the component when the window size changes
    setWindowSize(useWindowSize());
  }, [windowSize]);

  return (
    // ...
  );
}

这种方法更加封装,并且遵循 React 的生命周期模式,保持组件的代码整洁和可维护。

以上是如何在浏览器调整大小时重新渲染 React 视图:jQuery 与以 React 为中心的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn