反应状态意外变化

时间:2016-10-10 13:03:37

标签: javascript reactjs state immutability

假设有两个状态是同一个对象,在某个时间点使用setState对一个对象也会改变状态中的另一个对象。

让我用代码解释一下;

export default class AgentDetail extends Component {

    constructor(props) {

        super(props)
        this.state = {x: 1, y:1 }
    }

    componentDidMount() {

        let theObject = {
            someKey: 'someValue'
        }

        this.setState({
            x: theObject,
            y: theObject // I also tried with Object.create(theObject) and Object.assign({}, theObject)
        })

        this.changeStates()
    }

    changeStates() {

        let otherObject = {
            someKey: 'someOtherValue'
        }

        this.setState({
            x: otherObject
        })

        console.log(this.state.y) // { someKey: 'someOtherValue' }

    }

}

我希望y成为'someValue',但它会随x变异,我找不到连接。

提前致谢

0 个答案:

没有答案