首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redux中的setState({})修改数据直接存储初始对象

问redux中的setState({})修改数据直接存储初始对象
EN

Stack Overflow用户
提问于 2017-09-07 07:30:17
回答 2查看 718关注 0票数 0

当我设置修改我的redux存储initial_state对象的initial_state对象时。

以下是我的复古店:

代码语言:javascript
复制
export const initial_state = {address:{firstName:"",lastName:""}}
export const store = createStore(reducers,Object.assign({},initial_state));

在我的组件里

代码语言:javascript
复制
class AddressForm extends React.Component{


constructor(props){
super(props)
this.state = {address:this.props.address};
this.onAddressChange = this.onAddressChange.bind(this);
}
  onAddressChange(e){
   let address = Object.assign({},this.state.address);
     address["firsName"].value = e.target.value;
     this.setState({address:address})
  }
  render(){
     console.log(this.props.address);
      return(...having input field with onChange=
                {this.onAddressChange}....)
   }
}

function mapStateToProps(state){
  return({
     address:state.address
  });
}
export default connect()(AddressForm);

按照上面在控制台中的代码,我将从redux存储中打印this.props.address,并将值打印为{firstName:"Typed in text box"}。

实际上,我只是在通过创建新的address对象来修改组件的状态,并且只修改该状态值。

就连我都不派人去.

但它还是修改了我在redux商店的intial_state,为什么?

谢谢各位..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-07 07:47:19

语句1:

this.state = {address:this.props.address};存储存储address state的引用。

语句2:

代码语言:javascript
复制
let address = Object.assign({},this.state.address);

您正在创建干净的副本并将其存储在address中。

但,

代码语言:javascript
复制
this.setState({address:address}) 

不是从语句2更新address变量,而是从语句1更新address,这是redux中对address state的引用。这就是为什么您的redux存储值正在更新。

票数 0
EN

Stack Overflow用户

发布于 2017-09-07 07:56:51

我已经有一段时间没有反应了,但首先引起我注意的是,mapStateToProps应该被传递给connect的初始调用。我敢打赌,如果你在构造函数中做了一个console.log(this.props.address),它就会打印undefined。

而且,我也不会存储像这个this.state = {address:this.props.address};这样的道具的参考资料。相反,将this.state用于表单值的临时存储,然后通过操作将其传递给表单提交上的存储。

刚开始在Stack Overflow中伸出援手,所以请告诉我,如果我对任何信息不清楚,或者可能有进一步的帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46090421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档