【发布时间】:2021-01-28 22:34:15
【问题描述】:
我有两个要从中检索数据的 API 端点,我想显示每个端点中的记录数。到目前为止,这是我的代码,哪种有效,并且在 Postman 中测试 API 会返回正确的数据 -
const [orders, setOrders] = useState([]);
useEffect(() => {
const fetchData = async () => {
const resSeven = await axios('http://localhost:5000/api/7daycheck');
const resThirty = await axios('http://localhost:5000/api/30daycheck');
setOrders({ seven: resSeven.data, thirty: resThirty.data });
};
fetchData();
}, []);
现在,当我添加 console.log(orders.seven); 时,控制台会显示这个 -
因此,当我在 JSX 代码中添加行 <p>{orders.seven.length}</p> 时,它会引发错误“TypeError:无法读取未定义的属性‘长度’”。怎么回事?
【问题讨论】:
-
首先,将订单初始化为数组(
const [orders, setOrders] = useState([]);),然后将其设置为对象(setOrders({ seven: resSeven.data, thirty: resThirty.data }););这没有多大意义。无论如何,问题是由于orders.seven是undefined直到您从 fetch 调用中得到响应。如果您将<p>{orders.seven.length}</p>更改为<p>{orders && orders.seven && orders.seven.length}</p>,您应该不会再看到该错误。
标签: javascript node.js reactjs api axios