这是 react 项目中的 bootcamp.js 文件
import React, { Component, useState, useEffect } from 'react';
const Bootcamps = () => {
const [error, setError] = useState(null);
const [isLoaded, setIsLoaded] = useState(false);
const [bootcamps, setBootcamps] = useState();
const loadData = async () => {
const response = await fetch('http://localhost:5000/api/v1/bootcamps');
const data = await response.json();
setIsLoaded(true);
setBootcamps(data);
console.log(data); // showing data
console.log(bootcamps); // showing undefined
};
useEffect(() => {
loadData();
}, []);
........
......
...
console.log(bootcamps) 显示未定义。请帮忙
答案 0 :(得分:1)
setBootcamps 是异步的,所以你不能在调用 setter 函数后立即看到结果。
您可以添加另一个 useEffect 并将训练营状态作为依赖项。因此,当训练营发生变化时(在设置状态之后),您需要做一些事情。
useEffect(() => {
console.log({ bootcamps });
}, [bootcamps]);
答案 1 :(得分:1)
如果你愿意,你可以这样尝试;
const loadData = async () => {
const response = await fetch('http://localhost:5000/api/v1/bootcamps');
const data = await response.json();
setIsLoaded(true);
setBootcamps(data);
};
useEffect(() => {
loadData();
console.log(bootcamps)
}, [bootcamps]);
因为你的依赖缺失,我不知道你的数据类型,但如果你想尝试,你的数据可能是一个对象;
const [bootcamps, setBootcamps] = useState({});