首先我们需要了解useEffect的工作原理。
useEffect中的回调函数返回的是一个清除器函数,即返回值必须为 函数,那如果使用async后,我们知道,async返回的是一个Promise对象,具体的原因需要参照react源码了,指路:
useEffect中不能使用async原理详解_React_脚本之家 (jb51.net)
那么如何实现呢?
内部再写一个自执行函数即可,这种方法比较简陋
useEffect(() => {
(async ()=>{
await new Promise()
})()
}, [])
但这个依然有问题,因为返回值永远是undefined,即无法取消订阅
Q.E.D.