阅读 217

React原理(react原理及应用场景)

setState()的说明

1、更新数据

  • setState()是异步更新数据的

  • 注意:使用该语法时,后面的setState()不会依赖于前面的setState()

  • 可以多次调用setState(),只会触发一次重新渲染

this.state = { count:1 } this.setState({     count:this.state.count + 1 }) console.log(this.state.conut)  // 1 复制代码

2、推荐语法

  • 推荐:使用setState((staet,props) => {})语法

  • 参数sate:表示最新的state

  • 参数props:表示最新的props

this.setState((state,props) => {     return {         count:state.count + 1     } }) console.log(this.state.count);  // 1 复制代码

3、第二个参数


    1. 场景:在状态更新(页面完成重新渲染)后立即执行某个操作


    1. 语法:setState(updater[,callback])

this.setState(     (state,props) => {},     () => { console.log('这个回调函数会在状态更新后立即执行') } ) 复制代码

JSX语法转化过程

  1. JSX仅仅是createElement()方法的语法糖(简化语法)

  2. JSX语法被@babel/preset-react插件白你以为createElement()方法

  3. React元素:是一个对象,用来描述你希望在屏幕上看到的内容

转化过程:JSX语法 -> createElement() -> React元素

组将更新机制

  • setState()的两个作用:1、修改state  2、更新组件(UI)

  • 过程:父组件重新渲染时,也会重新渲染子组件,但只会渲染当前组件子树(当前组件及其所有子组件)

组件性能优化

1、减轻state

  • 减轻state:只存储跟组件渲染相关的数据(比如:count/列表数据/loading等)

  • 注意:不用做渲染的数据不要放在state中,比如定时器id等

  • 对于这种需要在多个方法中用到的数据,应该放在this中

  • 伪原创工具 SEO网站优化  https://www.237it.com/ 

2、避免不必要的重新渲染

  • 组件更新机制:父组件更新会引起子组件也被更新

  • 问题:子组件没有任何变化时也会被重新渲染

  • 解决方式:使用钩子函数shouldComponentUpdate(nextProps,nextState)

  • 作用:通过返回值决定组件是否重新渲染,返回true表示重新渲染,false表示不重新渲染

  • 触发时机:更新阶段的钩子函数,组件重新渲染前执行(shouldComponentUpdate -> render

class Hello extends Component {     shouldComponentUpdate() {         // 更具条件,决定是否重新渲染组件         return 判断条件     }     render() { ... } } 复制代码

虚拟DOM和Diff算法

React更新视图的思想是:只要state变化就重新渲染视图

虚拟DOM:本质上就是一个JS对象,用来描述你希望在屏幕上看到的内容(UI)

执行过程:

  1. 初次渲染时,React会根据初始state(Model),创建一个虚拟DOM对象(树)

  2. 根据虚拟DOM生成真正DOM,渲染到页面中

  3. 当数据变化后(setState()),重新根据新的数据,创建新的虚拟DOM对象(树)

  4. 与上一次得到的虚拟DOM对象,使用Diff算法对比,得到需要更新的内容

  5. 最终,React只将变化的内容更新(patch)到DOM中,重新渲染页面


作者:南风i
链接:https://juejin.cn/post/7034492569232867336


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐