useEffect中使用异步函数

useEffect是不能直接用 async await 语法糖的

/* 错误用法 ,effect不支持直接 async await*/
 useEffect(async ()=>{
        /* 请求数据 */
      const res = await getData()
 },[])

useEffect 的回调参数返回的是一个清除副作用的 clean-up 函数。因此无法返回 Promise,更无法使用 async/await

那我们应该如何让useEffect支持async/await呢?

方法一(推荐)

const App = () => {

  useEffect(() => {
    (async function handle() {
      await getData();
    })();
  }, []);

  return <div></div>;
};

方法二

  useEffect(() => {
    const handle = async () => {
      const data = await getData();
      setData(data);
    };
    getDatas();
  }, []);

 


版权声明:本文为yusirxiaer原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。