我正在尝试更改对象数组的状态,它的确更改了状态,但是我的组件没有重新渲染。为什么会这样?
useEffect(() => {
if(data && data.rows) {
data.rows.forEach(async (elem) => {
const row = await axios.get(url);
elem.members= row.data.length;
})
}
}, [data])
答案 0 :(得分:1)
仅当您设置状态是基于类的组件还是挂钩时,组件才会重新渲染
基于1.class的组件this.setState()
2.hooks setLen()
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])
答案 1 :(得分:0)
要重新渲染组件,必须更新状态。您需要进行setState
的组件更新。另外,如果您要从道具中获取更新的值,则应考虑使用componentDidUpdate
React的生命周期挂钩。