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()。
我认为有长期批处理事件的计划,但不确定 在细节上。