react setState 状态更改

  addEditChange(e,key){
        let that = this;
        let add_edit_form = that.state.add_edit_form;
            add_edit_form[key] = e.target.value;
        that.setState({
            add_edit_form:add_edit_form
        })
        console.log(that.state.budget_form);
    }
    
    
    我 setState  add_edit_form  为啥budget_form里面的值也会变
    
阅读 1.9k
3 个回答

典型的shallow copy跟deep copy(某个地方add_edit_form 等于 budget_form了), 你要改变的话最好用

import update from 'react-addons-update';

...

const add_edit_form = update(budget_form, {a: {$set: 'b'}})
//或者更新自己
const add_edit_form = update(this.state.add_edit_form, {a: {$set: 'b'}})
//新的add_edit_form是独一无二的,不回牵扯到之前的reference

this.setState({add_edit_form})

你的budget_form是不是就是add_edit_form

console.log(that.state.budget_form);  设置之前查看值
that.setState({
            add_edit_form:add_edit_form
},()=>{
 console.log(that.state.budget_form);  设置之后查看值  
})

看打印的是否一样

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题