最近在做的React项目里,想要fetch数据或是保存数据,就想用到useEffect钩子。
useEffect(() => { /* 第1个参数是回调函数*/
console.log('回调函数执行了!') }
,[依赖项]) //第2个参数是依赖项,用来限制回调函数的执行时间。
但是我发现这个useEffect并不是这么简单的东西。开发模式下面,发现useEffect函数会被执行多次。虽说可以用
const count = useRef(0)
useEffect(()=>{
count.current +=1
})
useEffecy(()=>{
if(count.current>1){
fn(xxxx)
}
},[])
的方式来强行禁止它多次执行,但是并不能真正意义上解决问题。查询多方资料,发现是在index.tsx里的
<React.StrictMode>
<App />
</React.StrictMode>
这个<React.StrictMode>带来的问题。虽然依旧不知道答案,不过这个严格模式确实会带来各种bug,在这里遇到了还是去掉比较好。
去掉就不会再多次执行了。