React中的setState
setState为什么需要异步?
- 无法限制何时使用异步,多次连续使用setState
- 防止多次渲染,异步rendering不仅仅是性能上的优化,而且这可能是react组件模型在发生的根本性的改变
this.setState({ inputTxt:‘‘ }) console.log(this.state.inputTxt); //立即打印不出inputTxt:‘‘
如果我们要立即打印出inputTxt的变化需要通过setTimeout打印出来
this.setState({ inputTxt:‘‘ }) setTimeout(function(){ console.log(this.state.inputTxt); },0)
或者:
this.setState({ inputTxt:‘‘ },()=>{ console.log(this.state.inputTxt); })
setState最终会通过this.render 返回newVnode,然后通过patch函数和preVnode进行对比,从而重新渲染html
Vue中的属性变化
vue中属性变化,首先触发Object.defineProperty中属性的set监听,执行updateComponent方法(异步),通过vm._render()更新vNode(新旧node对比),最后渲染到html中
原文地址:https://www.cnblogs.com/fuGuy/p/9226856.html
时间: 2024-11-07 01:07:39