javascript - 引发其他组件 React.js 的重新渲染

标签 javascript reactjs react-hooks

我想从另一个组件引发重新渲染,避免“触发组件”重新渲染。

const App = () => {

    const [isPopUpActive, setIsPopUpActive] = useState(false)

    const popUpOnOff = () => {
        if(isPopUpActive)
            setIsPopUpActive(false)
        else
            setIsPopUpActive(true)
    }

    return (
        <div>
            <SomeComponent
                trigger={popUpOnOff}
            />
            <PopUpComponent
                isActive={isPopUpActive}
            />
        </div>
    )
}

我认为用 React.memo 包装 SomeComponent 并更改 PopUpComponent 中的 prop 就可以了,但是调用 SomeComponent 中的触发器 函数重新渲染所有内容。有没有办法避免第一个组件重新渲染?

最佳答案

popUpOnOff 函数的标识在每次渲染时都会发生变化,因此内存组件无法执行任何操作。

您需要记住该回调,使其取决于它使用的数据:

const App = () => {
  const [isPopUpActive, setIsPopUpActive] = useState(false);

  const popUpOnOff = useCallback(() => {
    setIsPopUpActive(!isPopUpActive);
  }, [isPopUpActive, setIsPopUpActive]);

  return (
    <div>
      <SomeComponent trigger={popUpOnOff} />
      <PopUpComponent isActive={isPopUpActive} />
    </div>
  );
};

关于javascript - 引发其他组件 React.js 的重新渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58697633/

相关文章:

javascript - Material UI - radio 无法确定我的状态

reactjs - 如何仅在用户身份验证后设置 Apollo 客户端?

reactjs - 使用 React Hooks 时如何替换 this.setState?

reactjs - 如何使用 useState 更新初始状态对象的特定属性

javascript - onClick Div 出现几秒后消失

javascript - 从数据库获取文本值而不换行以使用它的javascript变量

javascript - 重写 Javascript 中的函数

Javascript:数组中的对象有 undefined variable ?

javascript - ReactJS 前端与 NodeJS 后端 : Rendering

javascript - 设计 React Hooks 防止 react-hooks/exhaustive-deps 警告