Javascript 为什么我的组件在更新后没有重新渲染?
我试图改变我的对象数组的状态,它确实改变了状态,但我的组件并没有重新渲染。为什么呢Javascript 为什么我的组件在更新后没有重新渲染?,javascript,reactjs,object,axios,Javascript,Reactjs,Object,Axios,我试图改变我的对象数组的状态,它确实改变了状态,但我的组件并没有重新渲染。为什么呢 useEffect(() => { if(data && data.rows) { data.rows.forEach(async (elem) => { const row = await axios.get(url); elem.members= row.data.length; })
useEffect(() => {
if(data && data.rows) {
data.rows.forEach(async (elem) => {
const row = await axios.get(url);
elem.members= row.data.length;
})
}
}, [data])
只有当您设置状态时,组件才会重新呈现,无论它是基于类的组件还是挂钩 1.基于类的组件
this.setState()
2.hookssetLen()
对于要重新呈现的组件,必须更新状态。您需要执行
设置状态
,以更新组件。另外,如果你从道具获得更新的值,那么你应该考虑使用<代码>组件-Debug更新< /COD>生命周期挂钩。你在每个循环迭代中设置状态,这将导致多个渲染。那不是我想要的meant@Ralph您正在更改循环中的状态值吗?我正在更改循环中的单个对象属性。它可以工作,但不会重新渲染
const [len, setLen] = React.useState(0);
useEffect(() => {
if(data && data.rows) {
data.rows.forEach(async (elem) => {
const row = await axios.get(url);
setLen(row.data.length);
})
}
}, [data])