react中prevstate的对象



我有处于类状态的对象。

man: {
name: "John",
wife: [{"children": 2}, {"children": 3}]
}
this.setState(prevState => ({man: prevState.wife[0].children + 1}));

我想加上或减去第一任妻子的孩子数量。我使用prevState,但它不起作用。为什么以及如何更改此属性?

在进入wife属性之前,您需要访问man属性。因为wife属性在man属性内部。

let obj = {
man: {
name: "John",
wife: [{"children": 2}, {"children": 3}]
}
}
console.log(obj.man.wife[0].children)

您的旧状态:

{
man: {
name: "John",
wife: [{"children": 2}, {"children": 3}]
}
}

你正在返回新的状态:

{
man: 3
}

如果你需要保持相同的状态结构,解决方案可以是:

this.setState(prevState => ({
man: {
...prevState.man,
wife: prevState.man.wife.map((value, i) => (i === 0 ? {
...value,
children: value.children + 1
} : value)),
}
}));

但使用lodash/fp更新或Ramda-over:通常更容易进行此类修改

this.setState(prevState => R.over(
R.lensPath([`man`, `wife`, 0, `children`]),
(v) => v + 1,
prevState,
));

试试这个;

this.setState((prevState) => ({man: prevState.man.wife[0].children + 1}));

因为您缺少州名称man

最新更新