美文网首页
render渲染

render渲染

作者: Time_Notes | 来源:发表于2020-07-07 15:02 被阅读0次

react实际渲染更新过程(reactElement、diff、setState)

一个模块中props,data中存在同名的变量,会渲染哪一个,为什么?

react结合immutable.js为什么能提高渲染效率


性能和渲染(Render)正相关

React基于虚拟DOM和高效Diff算法的完美配合,实现了对DOM最小粒度的更新。在个别复杂业务场景下,性能问题依然会困扰我们。此时需要采取一些措施来提升运行性能,很重要的一个方向就是避免不必要的渲染(Render)

渲染(Render)时影响性能的点

React的处理render的基本思维模式是每次一有变动就会去重新渲染整个应用。在Virtual DOM没有出现之前,最简单的方法就是直接调用innerHTML。

render返回的是一个什么?

VirtualDOM厉害的地方并不是说它比直接操作 DOM快,而是说不管数据怎么变,都会尽量以最小的代价去更新DOM。React将render函数返回的虚拟DOM树与老的进行比较,从而确定DOM要不要更新、怎么更新。当DOM树很大时,遍历两棵树进行各种比对还是相当耗性能的,特别是在顶层 setState一个微小的修改,默认会去遍历整棵树。尽管React使用高度优化的Diff算法 ,但是这个过程仍然会损耗性能。


触发render条件

1.组件挂载

React组件构建并将DOM元素插入页面的过程称为挂载。当组件首次渲染的时候会调用render,这个过程不可避免。

2.setState方法被调用(组件或父组件中

通常情况下,执行setState会触发 render。但是执行setState的时候一定会重新渲染吗?不一定,当setState传入null的时候,并不会触发render。

3.父组件重新渲染

react父节点数据变了,但传给子节点的没变,子节点变不变?

只要父组件重新渲染了,即使传入子组件的props未发生变化,子组件也会重新渲染进而触发render。

如何在数据不变的情况下阻止子节点render?

4.调用组件中的forceUpdate


优化Render

当子组件过多或者组件的层级嵌套过深时,反反复复重新渲染状态没有改变的组件,可能会增加渲染时间又会影响用户体验,此时就需要对render进行优化。

上面说了不必要的render会带来性能问题,因此主要优化思路就是减少不必要的render。


第一次进入到页面的时候,会在没数据的情况下有一次渲染;等fetch成功后会再一次进行渲染。怎么解决第一次进入页面没数据的情况下,页面渲染时不报错?

1.给定同fetch回来的数据格式一样的默认数据,数组使用空数组,对象则属性都需要存在,值为默认值或者空值。

2.思路是条件渲染,设置一个判断条件,条件值不同,渲染的组件不同。

constructor(){

    this.state = {

        isLoading = true,

        data: []

    }

}

render(){

    return (

        {

            this.state.isLoading

            ? <Loading />

            : <Content />

        }

    )

}

相关文章

  • 关于render渲染次数

    关于render渲染次数 页面加载render执行几了次(五) 单纯的前端渲染render在componentWi...

  • React 文档再学习 2 增加交互

    渲染(Render)和提交(Commit) 组件展示在页面之前,须有React 渲染 (Render)。可以如此想...

  • 渲染(Render)

    熟悉后台的同学一定知道数据绑定模式 简而言之就是挖空填洞 模板的渲染就是说洞已经挖好了,然后渲染就是个填洞的过程 ...

  • render渲染

    react实际渲染更新过程(reactElement、diff、setState) 一个模块中props,data...

  • render渲染组件

    render render渲染组件,也可以实现components一样的效果 render 和 component...

  • React 学习 2 JSX

    ReactDOM.render( Hello,world! 通过render渲染页面,输入Hello,world ...

  • react-demos

    [2018.08.08] Render JSXReactDOM.render()讲jsx渲染成HTML并插入到指定...

  • react 服务端渲染笔记

    开始 ssr:server side render 服务端渲染csr:client side render 客户端...

  • 玩转Vue_render函数

    新创建一个html,利用之前学过的组件注册完成渲染 使用render函数也可以渲染组件 区别 : 使用render...

  • 2019-07-03render函数

    新创建一个html,利用之前学过的组件注册完成渲染 使用render函数也可以渲染组件 区别 : 使用render...

网友评论

      本文标题:render渲染

      本文链接:https://www.haomeiwen.com/subject/czzzvhtx.html