【问题标题】:setState of an object - React Native对象的 setState - React Native
【发布时间】:2017-11-17 15:25:32
【问题描述】:

例如,我有这个:

this.state = {
      lang1: { name: 'Anglais', code: "en" },
      lang2: { name: 'Français', code: "fr" }
};

如何设置 lang1.name 的状态?当我这样做时它不起作用:

this.setState({ lang1.name: "myExample" });

我是 React Native 的新手,我不太清楚

【问题讨论】:

标签: reactjs react-native


【解决方案1】:
this.setState({
  lang1: {
    name: "myExample",
    code: this.state.lang1.code
  }
});

【讨论】:

  • 你应该解释为什么这有效,而不是仅仅给出一个代码的答案。就目前而言,这个答案并不能帮助 OP 或未来的访问者了解正在发生的事情。您还可以使用 ES6 ... 扩展运算符使您的示例更适用于一般场景
  • @Bojangles 你是对的,我认为这个答案更有帮助stackoverflow.com/a/44562452/2674187,关于原因,在 js 中你不能拥有像这样lang1.name 的对象键,你可以拥有@987654325 @bit ist 不是我的,它是嵌套对象,它只是用点刺痛
  • 是的,在看到您的帖子之前,我已经解决了我的解决方案。不过谢谢你的解释,我明白了:)
【解决方案2】:

你可以这样做:

this.setState((previousState) => {
  const lang1 = previousState.lang1
  return {...lang1, name: 'myExample'}
})

【讨论】:

  • 非常感谢
【解决方案3】:

你可以这样做。 ...只需添加退出键,然后添加/覆盖新键

this.setState({
	lang1:{
		...this.state.lang1,
		name: "myExample"
	}
})

【讨论】:

    【解决方案4】:

    值是一个参数...

    let data = this.state.objectState
    data[prop] = value
    this.setState({objectState: data})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 2021-05-18
      • 2018-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多