React 中,如果state中有一个较深层的值改变了,怎么去setState?

初次使用react,发现一个小小的疑问。
如果我有一个组件,其state是个极其复杂的机构,比如
{ a:1,b:2,c:{ d:[ {e:1,b:2},{e:2,b:4}]}}

现在,我的d数组的第二个成员的e由2变为3,那么我怎么设置setState.
我当下的做法是:
step 1.克隆一个state;
step 2.强克隆的state中对应位置的e,改为3
step 3.调用setState(克隆的新的state )

问题:请问码友们,有没有更好的办法

阅读 18.9k
5 个回答

setState只能作用于第一层级
多层级的情况可以
let data = this.state.data;
data.a.b.c = 1;
this.setState({data});

let paginationConfig = this.state.paginationConfig //选到上一级
paginationConfig.activePage = 3 //改变要设置的值
this.setState({paginationConfig},()=>{
console.log(this.state.paginationConfig) //重新查看,设置成功
}); //更新state数据

1: this.state.c=3;
2: this.setState(this.state);

不用这么复杂,直接
1: this.state.c.d[2].e=3;
2: this.setState({});

这样速度最快。很多人会写this.setState(this.state),这样react就把你的所有属性又处理一遍,略慢

1 篇内容引用
推荐问题
宣传栏