React:对变量的行动

时间:2018-06-05 08:57:03

标签: html css reactjs

有没有办法在变量(状态)上调用方法。 如何获取List哪些组件发生了变化?

 componentDidUpdate(prevProps, prevState) {

    const {ID} = this.state
        if (this.ID !== this.previousID || this.cmbID !== this.previoudcmbID) {
            if(this.ID !== undefined && this.cmbID !== undefined)
            {
                this.reload3();

            //  console.log(this.prevProps)
                console.log(this.state.settings[0])
                console.log(this.prevState.settings[0])

            }



    }
    this.prevState = this.state;
}

3 个答案:

答案 0 :(得分:2)

如果您使用this.setState({value:“newValue”}),您可以使用其他形式

this.setState({},callback),其中回调将在状态更新后具有新值,并且您可以以更优雅的方式以某种方式处理它。 下面的伪代码

{{1}}

答案 1 :(得分:1)

您无需维护prevState,如果需要监控的变量处于状态或道具状态,您可以使用componentDidUpdate生命周期挂钩来执行相同的操作

componentDidUpdate(prevProps, prevState) {

        const {ID, cmbID} = this.state
        const {ID: prevId, cmbID: prevCmbId} = prevState;
        if (ID !== prevId || cmbID !== prevCmbId) {
            if(typeof ID !== 'undefined' && typeof cmbID !== 'undefined')
            {
                this.reload3();

                console.log(prevProps)
                console.log(this.state.settings[0])
                console.log(prevState.settings[0])

            }
    }
}

答案 2 :(得分:0)

终于解决了

componentDidUpdate(PrevProps, prevState){
if(this.state.cmbID !== prevState.cmbID){

    this.reload2()
}   
if(this.state.ID !== prevState.ID){

    this.reload3()
}
}