【问题标题】:Fetching data from JSON file returning nothing从 JSON 文件中获取数据不返回任何内容
【发布时间】:2022-01-09 02:57:37
【问题描述】:

我正在构建一个太阳系应用程序,我希望将我星球的所有信息保存在一个 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],它只是空白,我无法从那里进行故障排除。

【问题讨论】:

    标签: javascript reactjs json react-hooks


    【解决方案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);
      });
    });
    

    【讨论】:

    • TypeError: Cannot read property 'then' of undefined 我想我在错误的地方运行该函数。
    • 糟糕,我的回答漏掉了一行。我现在修好了。在fetchData 中需要return
    • 它不再崩溃,但现在正在记录undefined
    • 大声笑看我犯错。现在修好了。
    • 我又做了一次更新。你的 JSON 可能没问题。这就是fetch 找回它的方式。您可以在响应对象上使用json 函数来获取 JSON 值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-31
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多