【发布时间】:2021-11-20 15:13:10
【问题描述】:
我有一些问题。当我在 useEffect 中异步获取数据(使用 axios 进行获取)时,以及在我将响应数据设置为状态后,使用 useState 挂钩。然后页面渲染之前我得到了服务器的响应。 为了演示这个问题,我将 console.log 用于获取当前状态,然后得到“未定义”:
const [positions, setPositions] = useState([]);
useEffect(() => {
const fetchPositions = async () => {
const response = await EmployeeService.getEmployeePositions();
setPositions(response.data);
};
fetchPositions();
console.log('positions from state: ', positions); //undefined
}, []);
从“EmployeeService”获取数据的方法:
getEmployeePositions(){
return axios.get(EMPLOYEE_API_BASE_URL + '/positions');
}
提前致谢,并致以最诚挚的问候!
【问题讨论】:
-
console.log 永远不会记录结果,因为在异步函数完成之前结果不存在。
undefined是正确且预期的结果。 -
请注意,
setPositions不会立即生效,因此可以未定义 stackoverflow.com/a/54069332/507203
标签: reactjs async-await use-effect use-state