React native 使用动态键更新状态的嵌套值
我想使用动态键更改状态的等级对象。下面是我的代码React native 使用动态键更新状态的嵌套值,react-native,setstate,React Native,Setstate,我想使用动态键更改状态的等级对象。下面是我的代码 state = { id1: { name: 'XYZ', grade: { science: 'A', maths: 'C', }, }, id2: { name: '
state = {
id1: {
name: 'XYZ',
grade: {
science: 'A',
maths: 'C',
},
},
id2: {
name: 'ABC',
grade: {
science: 'A+',
maths: 'A+',
},
},
}
我尝试了几件事,但都没有找到成功的结果
updateGrade(gradeObj, dyamicKey) { // dyamicKey will be id1, id2
this.setState({
[dyamicKey]: {
... dyamicKey.grade,
grade: gradeObj,
},
});
}
updateGrade(gradeObj, dyamicKey) { // dyamicKey will be id1, id2
this.setState({
[dyamicKey[grade]]: gradeObj,
});
}
供参考:本主题已被广泛讨论,甚至建议不要使用嵌套状态 作为对第一个答案和后续答案的额外注释,如果您的状态中有两个或多个嵌套值,并且希望更新单个嵌套值,则可以执行以下操作:
this.setState(prevState => ({
[dynamicKey]: {
...prevState[dynamicKey],
grade: {
...prevState[dynamicKey].grade,
science: "Z"
},
}));
或者,如果动态键与特定属性相关:
this.setState(prevState => ({
id1: {
...prevState.id1,
grade: {
...prevState.id1.grade,
[dynamicKey]: "Z"
},
}));
可以使用一个或多个动态键,并且可以对每个嵌套级别使用spread运算符(尽管使用这种方法代码将开始看起来很难看/脏)。仅供参考:本主题已被广泛讨论,甚至建议不要使用嵌套状态,根据此 作为对第一个答案和后续答案的额外注释,如果您的状态中有两个或多个嵌套值,并且希望更新单个嵌套值,则可以执行以下操作:
this.setState(prevState => ({
[dynamicKey]: {
...prevState[dynamicKey],
grade: {
...prevState[dynamicKey].grade,
science: "Z"
},
}));
或者,如果动态键与特定属性相关:
this.setState(prevState => ({
id1: {
...prevState.id1,
grade: {
...prevState.id1.grade,
[dynamicKey]: "Z"
},
}));
可以使用一个或多个动态键,并且可以对每个嵌套级别使用spread操作符(尽管使用这种方法代码将开始看起来很难看/脏)