在看一本 react 书时,它是这么写的。
function App1(){
const handleWindowsResize=()=>{
console.log('windows size change')
}
useEffect(()=>{
console.log('called')
const timerObj = setInterval(()=>{
console.log('每秒+1')
},1000)
window.addEventListener('resize',handleWindowsResize)
return ()=>{
console.log('clear')
clearInterval(timerObj)
window.removeEventListener('resize',handleWindowsResize)
}
},[])
return (
<div>
Hello world
</div>
)
}
console 里面会定时输出 windows size change ,而不会进入到 useEffect 里面清除定时器。 根据对书中理解,return 函数是在第二次执行 useEffect 之前执行的? 而上面的 useEffect 只会执行一次,是不是意味者 return 函数里面的代码不会被执行?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.