react的setState为什么要设计成事务的形式呢?

#1

我看了一下源代码,不太明白react的setState为什么要设计成事务的形式呢?

仅仅是为了让一个组件里面的两个setState合并起来执行吗?如果是这样,那感觉给开发者代码建议是不是会更好?
还是为了节省给浏览器更新dom的次数?
大家可以简单地说说自己的见解。

#2

英文不好的话找一下中文翻译, 印象里有人翻了:

1 Like
#3

我的理解是这样的:React 的一个基本理念就是通过改变state来驱动UI的改变,这中间用到虚拟 DOM 来缓冲,把所有的变化先集中到这个虚拟的DOM,等确定没有变化了,再一次性更新到网页的DOM,这样才能得到最大的性能。所以你看,要是setState不异步的话,每次改动一点,React都得去更新网页DOM,会很慢的。打个比方,你在网页的表单上输入,每输入一个字,表单的内容就变了,如果这个时候马上就送回服务器处理,服务器再送回整个页面,那肯定得慢死。

1 Like
#4

@p2227 可以看我的这篇文章 React 中 setState() 为什么是异步的?

#5

react 的setState并不是事务的形式吧