卡颂 从0实现React18
这里的异步任务就完成了自动的批量更新,当然在18版本要开启这个功能的话,需要使用ReactDOM.createRoot去挂载我们的应用,如果我们还是使用ReactDOM.render的话,就不会启用Automatic batching了。 Automatic batching看起来很香,但是如果在一些场景我不想用呢,官方也提供了解决办法,请看例子:
import { flushSync } from 'react-dom'; // Note: react-dom, not reactfunction handleClick() {
flushSync(() => {
setCounter(c => c + 1);
});
// React has updated the DOM by now
flushSync(() => {
setFlag(f => !f);
});
// React has updated the DOM by now}复制代码