为什么更新后我的组件无法重新渲染?

时间:2019-11-06 09:29:37

标签: 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;
        })
    }
}, [data])

2 个答案:

答案 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的生命周期挂钩。