react官方文档setState的一个疑问

image.png
这两个fetch返回结果分别执行setState。
关于这部分我有一点没明白:

两次setState时间点不同,如何理解下面的“完全替换”?

这里的合并是浅合并,所以 this.setState({comments}) 完整保留了 this.state.posts, 但是完全替换了 this.state.comments
阅读 3k
3 个回答

红框里是用 this.setState({comments}) 来举例,试图说明:你在替换 this.state.comments 的时候,不会影响到 this.state.posts,反过来也是成立的,各个子项互不干扰,这样的更改很“浅”
至于“合并”,大意就是:this.state 始终是同一个 state 实例,所有的更改不过是改变它的各个子项罢了,等于是把其他的内容“合并”到这个 state 实例上来。

所说的合并类似于

Object.assign( this.state, { comments: response.comments } );

也就是

Object.assign(
{ comments: [], ports: [] },
{ comments: response.comments }
);
新手上路,请多包涵

其实一开始我也不是很理解,所以才搜到了你的问题,看到你这一篇还有回答,我有了启发,我感觉我理解错了,他最下面仅仅说的是this.setState({comments}) 的浅合并,this.setState({posts})的浅合并在上一行代码已经结束了,最终结果应该是`
this.state=
{
ports: response.posts,
comments: response.comments
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题