为了账号安全,请及时绑定邮箱和手机立即绑定

react setState 状态更改

react setState 状态更改

ITMISS 2019-03-14 10:15:39
  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里面的值也会变    
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

典型的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})


查看完整回答
反对 回复 2019-03-27
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

你的budget_form是不是就是add_edit_form


查看完整回答
反对 回复 2019-03-27
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

console.log(that.state.budget_form);  设置之前查看值

that.setState({

            add_edit_form:add_edit_form

},()=>{

 console.log(that.state.budget_form);  设置之后查看值  

})

看打印的是否一样


查看完整回答
反对 回复 2019-03-27
  • 3 回答
  • 0 关注
  • 780 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号