反应-使用usestate挂钩推送数组

时间:2020-10-20 16:58:23

标签: javascript reactjs rxjs

我正在制作“加载更多”,每次单击按钮时都会从后端获取10个项目。

我不明白我正在面对这个基本而又怪异的问题。

问题(示例)

const [ projectArray, setProjectArray ] = useState([ { id: 1 } ]) // original state
//
const { data } = await axios.get(`/api/project/explore/${page}`);
console.log(data); // returns array of objects 
if (data.length > 0) {
   setProjectArray(array => [...array, data]);
}
console.log(projectArray) 
// This^^ returns >>> [ {id: 1}, [ { id: 2 }, { id: 3 }] ]

2 个答案:

答案 0 :(得分:2)

数据也是一个数组,因此您也应该扩展它

   setProjectArray(array => [...array, ...data]);

答案 1 :(得分:1)

在这种情况下,data已经是一个数组,因此可以正常工作。在现有数组内添加一个数组。

您可能需要使用concat()将两个数组连接在一起。

尝试setProject(concat(projectArray,data));