背景:Vue 用户,重学 React 中
先上代码
function App() {
const afterRender = () => {
console.log('after render')
}
// 1. 渲染后回调
// useEffect(afterRender)
// 2. 尝试用异步方式模拟渲染后的回调
queueMicrotask(afterRender)
// Promise.resolve().then(afterRender)
// setTimeout(afterRender, 0)
return (
<div className="App">
<div>something</div>
</div>
)
}
问题在于:
useEffect 表现正常(废话),
而 2 中的 3 种方法,通过异步方式实现渲染后执行,afterRender 会被调用两次,即控制台打印两次after render
,
这到底是什么原因?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.