react setState
setState()会对一个组件的state对象安排一次更新;当state改变了,改组件就会重新渲染;
state和props之间的区别是什么?
props和state都是普通的js对象。都是用来保存信息的,这些信息可以控制组件的渲染输出,重要的不同点就是:props是传递给组件的(类似于函数的形参),而state是组件内被组件自己管理的(类似于在函数内声明的变量)
setState 是异步的还是同步的?
setSate是异步的,调用setSate后会基于当前的state来计算出新的值,那你应该传递一个函数
解决办法:给setSate传递一个函数,而不是一个对像,就可以确保每次调用都是使用最新版的state
this.setState((state)=>{ return {asynchronous:state.asynchronous+1} })
传递一个函数可以让你在函数内访问到当前的 state 的值。因为 setState 的调用是分批的,所以你可以链式地进行更新,并确保它们是一个建立在另一个之上的,这样才不会发生冲突
setSate什么时候是异步的?
目前,在事件处理函数内部的setSate是异步的。
如果parent和child在同一个click事件中都调用了setState,这样就可以确保child不会被重新渲染,取而代之的是react会将该state冲洗到浏览器事件结束的时候,再统一地进行更新。这种机制可以在大型应用中得到很好的性能提升
为什么 React 不同步地更新 this.state?
在开始重新渲染之前,React 会有意地进行“等待”,直到所有在组件的事件处理函数内调用的 setState() 完成之后。这样可以通过避免不必要的重新渲染来提升性能。
网友评论