停止反应功能组件(使用钩子)重新渲染



i具有纯粹的功能组件,我在其中使用usefect获取一些数据。我传递一个空字符串以使用效果,因此它的作用就像组件DID MONT

const getData = () => {
    setTimeout(() => {
        setLocalState({ a: 2 });
        setIsLoading(false);
    }, 0);
};
useEffect(() => getData(), []);

我的整个组件现在两次重新租赁。我想控制这种行为,仅在某些条件下重新渲染。

在这里,我希望将组件归还 setLocalState 已经设置了 localstate ,而不是 setIsloading set set set em> false。

这是此问题的代码沙箱:https://codesandbox.io/s/0oyp6j506p

如果我们在基于React的事件之外调用多个状态设置器将触发多个渲染器,但在类组件中,状态更改将被批次批量。但是在长期计划中,这将是修复的,此处提到

这似乎是正常的反应行为。它以完全相同的方式工作 如果要多次在类组件中调用SetState()。

React当前将批处理状态更新,如果它们是从中触发的 在基于React的事件中,例如单击按钮或输入更改。它 如果在React事件之外触发它们,则不会批处理更新 处理程序,就像settimeout()。

我认为有长期批处理事件的计划,但不确定 在细节上。

相关内容

  • 没有找到相关文章

最新更新