“在渲染中调用setState会导致无限循环”

问题描述 投票:0回答:1

我想为子类别设置状态,但显示超出最大更新深度。怎么克服这个?请帮助,谢谢。

getSubCategories(){
        let a = filter(this.state.allCategories,{'category_id': this.state.selectedCategoryId})
        let subCategories=[]
        a.map((c) =>{
            const value = {value: c.id, label: c.name}
            subCategories.push(value)
        })
        this.setState({subCategories:subCategories})
    }

预期结果是设置子类别的状态。

reactjs
1个回答
0
投票

setState()将触发更新,这意味着组件将再次render。所以你不能在render中调用setState,因为它会一直保持更新和渲染。

你可以做的是你可以在getSubCategories()上调用componentDidMount()方法,它将按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.