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.hooks
setLen()


对于要重新呈现的组件,必须更新状态。您需要执行
设置状态
,以更新组件。另外,如果你从道具获得更新的值,那么你应该考虑使用<代码>组件-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])