开发者问题收集

我无法从状态、带有功能组件的 ReactJS 渲染和对象

2021-05-21
68

使用此功能,我从 API 中过滤了一些对象

const consultarAPI = async () => {
try {
  const consulta = await fetch(URL);
  const respuesta = await consulta.json();
  // Aqui se filtran las noticias
  const noticiasFiltradas = respuesta.filter(
    (noticia) => noticia.categoria === categoria
  );
  setNoticias(noticiasFiltradas);
  setDestacada(noticiasFiltradas[noticiasFiltradas.lenght-1])
  
} catch (error) {
  console.log(error);
}

};

我不知道哪里出了问题。状态“noticias”接收对象数组,而“destacada”接收数组的最后一个对象。

在应用程序上,我的组件的状态完全符合我的预期。但是,如果我这样做

<h4>{destacada.titulo}</h4>

因为我需要呈现该特定对象的标题。应用程序崩溃,我收到此错误。 TypeError:无法读取未定义的属性“titulo”

它怎么会未定义 ?在我尝试呈现对象之前的几秒钟,它运行正常。请帮我。 这些是我的状态:

const [destacada, setDestacada]=useState({});


const [noticias, setNoticias] = useState([]);



const [categoria, setCategoria] = useState("");
2个回答

此处您有拼写错误

setDestacada(noticiasFiltradas[noticiasFiltradas.lenght-1])

这就是 destacada 未定义的原因。

因此,将 noticiasFiltradas.lenght-1 更改为 noticiasFiltradas.length-1

Zhang TianYu
2021-05-21

我已经解决了这个问题。不要写 <h4>{destacada.titulo}</h4> ,而是写 <h4>{destacada && destacada.titulo}</h4>

Goyi
2021-05-22