Javascript 如何更新状态

Javascript 如何更新状态,javascript,reactjs,Javascript,Reactjs,我正在尝试更新状态,但只更新postalCode。当执行上述代码时,我希望得到如下结果 constructor(){ super(); this.state = { address: { street:null, city:null, postalCode: null } }; } postalCodeChange(e){ this.setState.addr

我正在尝试更新状态,但只更新postalCode。当执行上述代码时,我希望得到如下结果

constructor(){
    super();
    this.state = { 
        address: {
            street:null,
            city:null,
            postalCode: null
        }
    };
}
postalCodeChange(e){
    this.setState.address.postalCode = e.target.value;
    console.log(this.state);
}

但我犯了个错误。怎么了?

要更新状态,必须使用方法

注意-
合并
这不是真正的功能,为了深入合并对象,您可以使用以下软件包:

或者,您可以使用方法from来获取此方法,并执行以下步骤

  • npm i react插件更新--保存
  • 导入
    (或
    需要
    )并使用它

    const state = merge({}, this.state, {
      address: { postalCode: e.target.value }
    });
    
    this.setState(state);
    
  • 如果您使用
    ES2015
    ,您也可以使用,或

    对象。分配

    import update from 'react-addons-update';
    const state = update(this.state, {
      address: { 
        postalCode: { $set: e.target.value }
      }
    });     
    
    this.setState(state);
    
    排列运算符

    const state = Object.assign({}, this.state, {
       address: Object.assign({}, this.state.address, { postalCode: 1000 })
    });
    

    我看到您正在使用ES6,所以我假设您也可以使用

    通过使用该功能,您可以在无需额外插件或大量代码的情况下更新状态

    const newState = {
      address: { ...state.address, postalCode: 1000 }
    };
    
    const newState = {
      address: { ...state.address, postalCode: 1000 }
    };
    
    this.setState({
        address: {
            ...this.state.address,
            postalCode: e.target.value
        }
    });