在 React.js 中获取 api 的 useEffect 钩子出现问题
problem in useEffect hook to fetch api in React.js
这是 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(训练营)显示未定义。请帮忙
setBootcamps 是异步的,因此您无法在 setter 函数调用后立即看到结果。
您可以添加另一个将训练营状态作为依赖项的 useEffect。所以,当训练营发生变化时(在设置状态之后),你会做一些事情。
useEffect(() => {
console.log({ bootcamps });
}, [bootcamps]);
如果你愿意可以这样试试;
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({});
这是 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(训练营)显示未定义。请帮忙
setBootcamps 是异步的,因此您无法在 setter 函数调用后立即看到结果。
您可以添加另一个将训练营状态作为依赖项的 useEffect。所以,当训练营发生变化时(在设置状态之后),你会做一些事情。
useEffect(() => {
console.log({ bootcamps });
}, [bootcamps]);
如果你愿意可以这样试试;
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({});