开发者问题收集

从 JSON 文件获取数据,不返回任何内容

2022-01-09
114

我正在构建一个太阳系应用程序,我想将我星球的所有信息都保存在一个 JSON 文件中,以便于访问。JSON 文件的格式如下
Planet-info.json,位于我的 React 应用程序的 public 文件夹中

  "planets": [
        {
            "Name": "Mercury",
            "Description": "The smallest planet in our solar system and closest to the Sun—is only slightly larger than Earth's Moon. Mercury is the fastest planet, zipping around the Sun every 88 Earth days.",
            "Moons": 0,
            "Habititable": "false"
        },
        {
            "Name": "Venus",
            "Description": "is hot",
            "Moons": 0,
            "Habititable": "false"
        }
    ]

我正在使用 useEffect 钩子获取数据

 const [planetData, setPlanetData] = useState();
  useEffect(() => {
    const fetchData = () => {
      fetch("/planet-info.json").then((result) => {
        setPlanetData(result);
      });
    };
    fetchData();
    console.log(`planet data is ${planetData}`);
  }, []);

但是,当此代码运行并且 console.log 语句运行时,它会返回行 planet data is 它没有显示 undefined ,甚至没有显示 [Object object] ,它只是空白的,我无法从那里进行故障排除。

1个回答

fetchData 异步运行。因此,正在发生的事情是

  1. fetchData 开始
  2. console.log 执行(在 json 文件有机会加载之前)
  3. fetch 完成时, setPlanetData(result) 发生。 如果您想看到打印出来的值,应该这样做:
useEffect(() => {
  fetch("/planet-info.json").then(result => {
    const json = result.json();
    console.log(json);
    setPlanetData(json);
  });
});
Hanchen Jiang
2022-01-09