【问题标题】:JSON.Stringify giving too much informationJSON.Stringify 提供太多信息
【发布时间】:2020-08-29 03:55:50
【问题描述】:

我正在使用简单的 fetch 调用从 API 中提取数据。 API 调用提取一个对象,我使用 JSON.Stringify 以可读格式提取数据,但是,我只想要它产生的数字。这是 API 的摘录

{
  "confirmed": {
    "value": 24637475,
    "detail": "https://covid19.mathdro.id/api/confirmed"
  },
  "recovered": {
    "value": 16108272,
    "detail": "https://covid19.mathdro.id/api/recovered"
  },

我只是想得到确认的值

这是我当前的代码

import React, { useState, useEffect } from "react";

const Cards = () => {
    const [hasError, setErrors] = useState(false);
    const [data, setData] = useState({});

    async function fetchData() {
        const res = await fetch("https://covid19.mathdro.id/api");
        res
            .json()
            .then(res => setData(res))
            .catch(err => setErrors(err));
    }

    useEffect(() => {
        fetchData();
    }, []);

    return (
        <div>
            <span>{JSON.stringify(data.confirmed)}</span>
            <hr />
            <span>Has error: {JSON.stringify(hasError)}</span>
        </div>
    );
};
export default Cards;

【问题讨论】:

  • data.confirmed &amp;&amp; data.confirmed.value 没有给你你需要的东西吗?
  • @keikai 字符串不能有属性confirmed
  • @charlietfl 这两个都给我未定义
  • 不是。没有意义,您可以显示字符串化版本,但不能显示对象版本。创建一个重现它的演示
  • 是的,如果这就是你从请求中使用的全部内容,那就更干净了

标签: javascript reactjs api fetch


【解决方案1】:

我花了一秒钟的时间查看它并重构它,最终弄明白了。


import React, { useState, useEffect } from "react";

const Cards = () => {
    const [confirmed, setConfirmed] = useState("");

    useEffect(() => {
        fetch("https://covid19.mathdro.id/api")
            .then((responseData) => responseData.json())
            .then((data) => {
                setConfirmed(data.confirmed.value)
            })
    })


    return (
        <div>
            {confirmed}
        </div>
    );
};
export default Cards;

我只是把所有东西都放在了 useEffect 中,这最终解决了我的问题。我不太确定为什么这是解决方案。

【讨论】:

  • 即使这是错误的,它也会在每次渲染时运行。更好的检查方法是 data &amp;&amp; {renderComponent} 您要显示的任何数据组件
猜你喜欢
  • 2020-11-22
  • 2018-03-23
  • 1970-01-01
  • 2021-12-22
  • 2022-07-29
  • 1970-01-01
  • 2012-01-12
  • 2011-01-09
  • 1970-01-01
相关资源
最近更新 更多