useEffect 传入的函数,它的返回值要么是一个方法(清理函数),要么就是undefined,其他情况都会报错
比较常见的一个情况是,我们的 useEffect 需要执行一个 async 函数,比如:
// ❌ // Type 'Promise<void>' provides no match // for the signature '(): void | undefined' useEffect(async () => { const user = await getUser() setUser(user) }, [])
虽然没有在 async 函数里显式的返回值,但是 async 函数默认会返回一个 Promise,这会导致 TS 的报错。
推荐这样改写:
useEffect(() => { const getUser = async () => { const user = await getUser() setUser(user) } getUser() }, [])