为什么useEffect的第一个参数不能用异步函数
最近面试遇到了这个问题两次了,说句实话,以前开发的时候还真没考虑过这个问题。面试官: useEffect第一个参数可不可以用异步函数?
我们先来看看用了异步函数会报什么错
报这个错的原因是因为async 会返回一个promise函数,而clean()函数不能是异步的 。
先来看看clean()函数的执行时机:
首次渲染不会进行清理,会在下一次渲染之前,清除上一次的副作用。
卸载阶段也会执行清除操作。
如果是异步的,我们就无法预知代码的执行情况,很容易出现难以定位的Bug。所以React就直接限制了不能用async。
参考:如何让 useEffect 支持 async...await? - 掘金 (juejin.cn)