反应范围值范围中没有相等值

时间:2019-01-02 20:31:55

标签: reactjs react-native

update = (key, value) => {
const newState = {};
newState[key] = value;

this.setState({ newState });
// firstName : hahaha
//    <HelMag msg={this.state.firstName}> </HelMag>
// The value of the browser must be changed.
// But the value(this.newState => hahaha) does not change.

console.log(newState);
  };

名字:哈哈哈

< HelMag msg={this.state.firstName}> </HelMag>

必须更改浏览器的值。    但是值(this.newState => haha​​ha)不变。

https://codesandbox.io/s/r57rv9qkko

完整代码不会出现,因此请用链接替换 请原谅。

1 个答案:

答案 0 :(得分:1)

问题在于您的语法:

this.setState({ newState });

应更改为:

this.setState(newState)

将已命名的变量(例如newState)括在方括号中时,您将创建一个具有与变量名相对应的属性/值的新对象。对于此处的示例,{newState}等效于:{ newState: { [key]: value } }。如果在调用setState之后检查状态,您会发现它现在具有一个名为newState的属性。因此,与其传递包含要添加到状态的值的对象,不如传递包含包含要更改的键/值对的对象,例如this.setState({ [key]: value })