Intento obtener una matriz y actualizar el estado usando ganchos

const [items, setItems] = useState([]); const getItems = async () ={amp}gt; { try { const response = await apiLink.get('...'); const data = response.data; console.log(data) // show an array of objects setItems(data); console.log(items); // show empty array } catch(error) { //... } }; 

console.log (datos):

 Array [ Object { "id": "1", "name": "Item name 1", "score": 10, }, Object { "id": "2", "name": "Item name 2", "score": 12, }, ] 

console.log (ítems): Array []

También intenté usar const responseJSON = response.json() , pero se produce un error

response.json no es una función. (En ‘response.json ()’, ‘response.json’ no está definido)

¿En que me equivoco?

Aquí se llamará a setItems de forma asíncrona, por lo que todavía no vería nada en la consola. Sin embargo, si desea hacer algunos cálculos después de establecer el estado de los elementos, puede usar una función de devolución de llamada usando useEffect .

Puede leer más aquí para saber cómo usar setState Callback en un componente funcional .

La función seItems aquí es asincrónica, intente mantener el log in useEffect hook obtendrá el resultado

Su componente debería parecerse a algo como:

 import React, { useState, useEffect } from 'react'; import axios from 'axios'; function App() { const [data, setData] = useState({ hits: [] }); useEffect(async () ={amp}gt; { const result = await apiLink.get('...'); setData(result.data); }); return ( {amp}lt;ul{amp}gt; {data.hits.map(item ={amp}gt; ( {amp}lt;li key={item.objectID}{amp}gt; {amp}lt;a href={item.url}{amp}gt;{item.title}{amp}lt;/a{amp}gt; {amp}lt;/li{amp}gt; ))} {amp}lt;/ul{amp}gt; ); } export default App;