react的好太多了,明显的优势:在稳定性和创新性之间做了很好的平衡,使用户比较容易适应;

灵活性和响应性:React提供最大的灵活性和响应能力。 虚拟DOM:由于它基于文档对象模型,因此它允许浏览器友好地以HTML,XHTML或XML格式排列文档。 可扩展性:由于其灵活的结构和可扩展性,React已被证明对大型应用程序更好。 不断发展: React得到了Facebook专业开发人员的支持,他们不断寻找改进方法致力于使其更先进。 丰富的JavaScript库:来自世界各地的贡献者正在努力添加更多功能。 Web或移动平台: React提供React Native平台,可通过相同的React组件模型为iOS和Android开发本机呈现的应用程序。

React原理揭秘,相信看完你会有更进一步的理解。一、组件更新机制

react原理讲解 React原理揭秘(1)

组件性能优化

减轻state

react原理讲解 React原理揭秘(2)

避免不必要的重新渲染

react原理讲解 React原理揭秘(3)

随机数案例

需求:随机生成数字,显示在页面,如果生成的数字与当前显示的数字相同,那么就不需要更新UI,反之更新UI。

利用nextState参数来判断当前组件是否需要更新

class App extends React.Component { state = { number: 0 } // 点击事件,每次点击生成一个随机数 hanldeBtn = () => { this.setState({ number: Math.floor(Math.random() * 3) }) } // 将要更新UI的时候会执行这个钩子函数 shouldComponentUpdate(nextProps,nextState) { // 判断一下当前生成的 值是否与页面的值相等 if(nextState.number !== this.state.number){ return true } return false } render() { return ( <div> 随机数:{this.state.number} <br /> <button onClick={this.hanldeBtn}>生成随机数</button> </div> ) } }

利用props参数来判断是否需要进行更新

class App extends React.Component { state = { number: 0 } // 点击事件,每次点击生成一个随机数 hanldeBtn = () => { this.setState({ number: Math.floor(Math.random() * 3) }) } render() { return ( <div> <NumberBox number={this.state.number} /> <button onClick={this.hanldeBtn}>生成随机数</button> </div> ) } } class NumberBox extends React.Component { // 将要更新UI的时候会执行这个钩子函数 shouldComponentUpdate(nextProps, nextState) { // 判断一下当前生成的 值是否与页面的值相等 if (nextProps.number !== this.props.number) { return true } return false } render() { return ( <h1>随机数:{this.props.number} </h1> ) } }

纯组件

作用以及使用

react原理讲解 React原理揭秘(4)

实现原理

react原理讲解 React原理揭秘(5)

react原理讲解 React原理揭秘(6)

react原理讲解 React原理揭秘(7)

虚拟DOM和Diff算法

虚拟DOM

本质上就是一个JS对象,用来描述你希望在屏幕上看到的内容

react原理讲解 React原理揭秘(8)

Diff算法

执行过程

react原理讲解 React原理揭秘(9)

代码演示

react原理讲解 React原理揭秘(10)

react原理讲解 React原理揭秘(11)

总结

视频内容:

前端React精品教程

,