setState的用法
- 最常见的用法就是传入一个对象。
this.setState({
peco:handsome
})
- 还可以接收一个函数
this.setState((prevState,props)=>{
// 要做的事件
return {peco:handsome};
})
- 因为setState是异步的,所以它还可以接收第二个参数,一个回调函数
this.setState({count:2},()=>{
isLoading:this.state.count===2 ? true : false
})
setState存储状态类似EventLoop,推荐文档
setState为什么是异步?
当被问及到这个问题时很多人想的是reason,而不是setState作为异步的advantage(个人理解存在即合理)
一、保证内部的一致性
- 无论 setState() 是同步的还是异步的。那么就算让 state 同步更新,props 也不行,因为当父组件重渲染(re-render )了你才知道 props。
二、性能优化
- React 会依据不同的调用源,给不同的 setState() 调用分配不同的优先级。调用源包括事件处理、网络请求、动画等。
三、支持state在幕后渲染
- 异步可以使state在幕后更新,而不影响你当前旧的页面的交互,提升用户体验。
setstate在原生事件,setTimeout,setInterval,promise等异步操作中,state会同步更新。()