我们正在讨论如何在React中更新嵌套状态.国家应该是不可变的吗?优雅地更新状态的最佳做法是什么?
假设您的状态结构如下所示:
this.state = {
numberOfStudents: "3",
gradeLevel: "5",
students : [
{ id : "1234",
firstName: "John",
lastName: "Doe",
email: "johndoe@mail.com"
phoneNumer: "12345"
},
{ id : "56789",
firstName: "Jane",
lastName: "Doe",
email: "janedoe@mail.com"
phoneNumer: "56789"
},
{ id : "11111",
firstName: "Joe",
lastName: "Doe",
email: "joedoe@mail.com"
phoneNumer: "11111"
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后我们想要更新joe doe的电话号码.我们有两种方法可以做到:
mutate state + force update to rerender
this.state.students[2].phoneNumber = "9999999";
this.forceUpdate();
Run Code Online (Sandbox Code Playgroud)
mutate state + setState with mutated state
this.state.students[2].phoneNumber = "9999999";
this.setState({
students: this.state.students
}); …Run Code Online (Sandbox Code Playgroud)