开发者问题收集

如何在 React 中的文本字段中显示来自 API 的内容?

2021-04-12
2046

概述:

我试图将一些内容放入文本字​​段中进行编辑,但出现了错误。

问题:

我收到一条错误消息,提示 TypeError:无法读取未定义的属性“favorite_animal”

我的代码:

// import ...
// import ...

function getDataFromApi(id) {
  var url =
    "https://api.example.com/" + id;
  return fetch(url, {
    method: "GET",
    headers: {
      Accept: "application/json",
      "Content-Type": "application/json",
    },
  })
    .then((response) => response.json())
    .then((responseData) => {
      return responseData;
    })
    .catch((error) => console.warn(error));
}

function myFunction(props) {
  const [data, setData] = useState([]);
  useEffect(() => {
    getDataFromApi(props.id).then((response) => setData(response));
  }, []);

  return (
    <>
      <Form>
        <TextField>{data.details.favorite_animal}</TextField>
      </Form>
    </>
  );
}

export default myFunction;

有什么想法吗?

1个回答

由于您使用的是 fetch,因此获取此数据需要一些时间,因此它尚未在初始化时准备好,您必须添加问号,例如:

<TextField>{data.details?.favorite_animal}</TextField>

因此,它首先会检查 data.details 是否存在,如果存在,则从中获取 favorite_animal

但如果您确定从 API 中获取 data.details.favorite_animal ,则此方法有效。如果 getDataFromApi 函数中的代码有误,并且您没有获取此数据,则不会显示任何内容

Sowam
2021-04-12