在 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({});