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();}, []);
?