为什么useEffect的第一个参数不能用异步函数

最近面试遇到了这个问题两次了,说句实话,以前开发的时候还真没考虑过这个问题。面试官: useEffect第一个参数可不可以用异步函数?

我们先来看看用了异步函数会报什么错

报这个错的原因是因为async 会返回一个promise函数,而clean()函数不能是异步的 。

先来看看clean()函数的执行时机:

首次渲染不会进行清理,会在下一次渲染之前,清除上一次的副作用。

卸载阶段也会执行清除操作。

如果是异步的,我们就无法预知代码的执行情况,很容易出现难以定位的Bug。所以React就直接限制了不能用async。

参考:如何让 useEffect 支持 async...await? - 掘金 (juejin.cn)

 

posted @ 2024-06-26 22:54  飞向火星  阅读(56)  评论(0编辑  收藏  举报