如何在useEffect中使用async/await?

750 阅读1分钟

如何在useEffect中使用async/await?

在React中,可以在useEffect钩子中使用async/await。但是需要注意以下几点:

  1. useEffect的回调函数必须是一个纯函数,不能直接使用async/await语法。因此,需要在回调函数内部定义一个异步函数,并在函数内部使用async/await语法。

  2. useEffect的回调函数必须返回一个清除函数或者undefined。如果使用了异步函数,需要在异步函数内部返回一个清除函数或undefined。

下面是一个在useEffect中使用async/await的例子:

import React, { useState, useEffect } from 'react';

function App() {
  const [data, setData] = useState([]);

  useEffect(() => {
    async function fetchData() {
      const response = await fetch('https://jsonplaceholder.typicode.com/todos');
      const json = await response.json();
      setData(json);
    }
    fetchData();
  }, []);

  return (
    <ul>
      {data.map(item => (
        <li key={item.id}>{item.title}</li>
      ))}
    </ul>
  );
}

export default App;

在这个例子中,我们在useEffect回调函数内部定义了一个异步函数fetchData,并在函数内部使用了async/await语法来获取数据。最后,我们将获取到的数据存储在state中,并在组件中渲染出来。