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
完整代码不会出现,因此请用链接替换 请原谅。
答案 0 :(得分:1)
问题在于您的语法:
this.setState({ newState });
应更改为:
this.setState(newState)
将已命名的变量(例如newState)括在方括号中时,您将创建一个具有与变量名相对应的属性/值的新对象。对于此处的示例,{newState}
等效于:{ newState: { [key]: value } }
。如果在调用setState
之后检查状态,您会发现它现在具有一个名为newState
的属性。因此,与其传递包含要添加到状态的值的对象,不如传递包含包含要更改的键/值对的对象,例如this.setState({ [key]: value })