有一个反应组件:
import React, { useState, useEffect } from 'react';
import { useHttp } from '../../hooks/http.hooks';
function Main() {
const { loading, error, request } = useHttp(); // Для запросов
const [news, setNews] = useState([]);
useEffect(async() => {
takeNews(4)
}, []);
async function takeNews(quantity = 5) {
const data = await request(`http://localhost:5500/api/news/top/${quantity}`); // Получаю массив из 4 объектов
if (Array.isArray(data.news)) {
setNews(data.news);
}
}
return (
<>
{news[0].content.headline}
</>
);
}
export default Main;
第一次渲染news[0].content.headline会报错:
无法从 读取属性
undefined。
你怎么能避免它呢?我想出的唯一解决方案是打包news成子对象,然后对它们做同样的事情,但是这样代码会有很多不合理的变量,而且会很丑。
您可以通过多种方式执行此操作(假设此变量在您的自定义中更改):
例如,您可以使用get函数
lodash您可以检查数组的长度:
您还可以使用可选运算符:
虽然对运算符的支持不是很好,并且在某些浏览器中可能会出现 SyntaxError,因此通过以下方式进行比较
&&: