对象的setState - React Native

4

例如,我有以下内容:

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

我该如何设置state中的lang1.name? 当我这样做时它不起作用:setState(lang1.name)。
this.setState({ lang1.name: "myExample" });

我是React Native的新手,对此并不是很清楚。


可能是如何在React状态中更新对象的重复问题。 - Mayank Shukla
如果您搜索“如何更新状态中的对象”,您会发现许多相同问题的结果,在询问之前请检查该问题是否已提出。也请查看此链接:https://dev59.com/010b5IYBdhLWcg3wJ-bb - Mayank Shukla
我同意@MayankShukla的观点。 - Ritesh Bansal
4个回答

11
你可以这样做。...只是添加现有的键,然后添加/覆盖新的键。
this.setState({
 lang1:{
  ...this.state.lang1,
  name: "myExample"
 }
})


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

2
你应该解释为什么这个代码能够工作,而不是只给出代码答案。目前这个答案并没有帮助到提问者或未来的访客理解正在发生的事情。你也可以使用ES6的...扩展运算符,使你的示例更适用于一般情况。 - Bojangles
是的,在看到你的帖子之前我已经解决了我的问题。但是感谢你的解释,我更明白了 :) - Erased

2
您可以这样做:
this.setState((previousState) => {
  const lang1 = previousState.lang1
  return {...lang1, name: 'myExample'}
})

非常感谢您。 - Erased

0

Value是一个参数...

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接