赞
踩
React 更新视图的思想是:只要state 变化就重新渲染视图
特点:思路非常清晰
问题:组件中只有一个DOM 元素需要更新时,也得把整个组件的内容重新渲染到页面中? 不是
理想状态:部分更新,只更新变化的地方。
问题:React 是如何做到部分更新的? 虚拟 DOM 配合 Diff 算法
=========================================================================
什么是虚拟dom?
虚拟 DOM:本质上就是一个JS 对象,用来描述你希望在屏幕上看到的内容(UI)。

=========================================================================
执行过程:


reder方法调用并不意味着浏览器的重新渲染,而render方法调用仅仅说明要去diff了
reder方法一调用并不是去对dom进行了一个更新,而是去进行diff了,diff进行虚拟dom的对比,然后定位到变化的dom,只更新变化的dom
import React from "react"; import ReactDOM from "react-dom"; // 虚拟dom和diff算法 class App extends React.PureComponent { state = { number: 0 }; handleClick = () => { this.setState(()=>{ return { number: Math.floor(Math.random()*3) } }) } render() { console.log("更新") const el = ( <div> <h1>计数器:{this.state.number}</h1> <button onClick={this.handleClick}>+1</button> </div> ); console.log(el) return el } } ReactDOM.render(<App />, document.getElementById("root"));

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。