我在一行中调用了多个setState,导致我的react项目中出现多个渲染。
const [isLoading, setIsLoading] = useState(false);
const [entities, setEntities] = useState([]);
// ...
// somewhere in the code
setEntities(result); // cause render
setIsLoading(false); // cause render
如何防止多重渲染?(而不是将这些状态合并到一个对象(
这取决于从哪里调用setStates
。通常,它们被分批在一起并触发一个重新应答器。然而,如果它们是从一些异步代码中调用的,react就无法将它们批处理在一起。你可以在这里阅读更多关于这种行为的
如果你想解决这种行为,例如,你可以使用useReducer
,因为你只需要一次更新就可以更改不同地方的数据,所以不会出现这个问题。