如果我的状态下以下Person对象
xmdp:plan
以下内容有效吗??
this.state = {
Person: {
FirstName: "John",
LastName: "Doe"
}
}
如果没有,为什么?
答案 0 :(得分:3)
首先,不建议在this.state
之外的其他位置直接分配constructor
。您应该始终使用setState
API
更新状态。
您的答案是,这样做是有效的,但是正确的方法是使用this.setState
。
在您的情况下,您应该将名字更新为以下名称:
let person = this.state.Person;
this.setState({
Person: {
...person,
FirstName: "Jane"
}
})
答案 1 :(得分:1)
答案 2 :(得分:0)
您应该像这样将组件的setState与this.setState
一起使用
this.setState(state => ({
Person: {
...state.Person,
FirstName: 'Jane'
}
}))
这样,您可以使状态保持不变并正确地重新呈现。不建议直接更改状态。
答案 3 :(得分:0)
@ZeroDarkThirty
您的方式显然是有效的,但不建议这样做。为什么:
并且,状态是使用新数据重新呈现组件的方法。 所以, 反应的 setState()方法更新您的状态,并且在状态更新时,组件将 重新渲染。
this.setState(state => ({
Person: {
...state.Person,
FirstName: 'Jane'
}
}))