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 => hahaha)不会改变。
https://codesandbox.io/s/r57rv9qkko
完整代码不会上升,因此请将其替换为链接请原谅我。
问题是你的语法:
this.setState({ newState });
这应该更改为:
this.setState(newState)
将命名变量(如 newState)括在括号中时,您将创建一个新对象,其中包含与变量名称对应的属性/值。就此处的示例而言,{newState}
等效于:{ newState: { [key]: value } }
。如果您在调用 setState
后检查了您的状态,您将看到它现在具有一个名为 newState
的属性。因此,与其传递包含要添加到状态的值的对象,不如传递包含要更改的键/值对的对象,例如 this.setState({ [key]: value })