美文网首页
避免react重新渲染

避免react重新渲染

作者: 麦子_FE | 来源:发表于2017-12-11 17:57 被阅读49次

前段时间一个面试官问我如何避免react重新渲染,当场很懵逼,因为看深入浅出react技术栈这本书的时候,是酱紫讲的:当修改props或者state,diff能够自动计算组件内部DOM树的不同,然后找出真正变化的DOM节点,对变化部分进行渲染。

这个理解是错误的。diff算法只是用来计算出改变状态或props的组件/虚拟节点。而这个组件/虚拟节点,无论多大都会被重新渲染。

例如:

当绿色部分状态修改,应该只是修改其对应的节点,但是react会把整个dom树都重新渲染。

那么如何避免这个问题呢?

shouldComponentUpdate

这个生命周期在组件被重新渲染前被调用,这个函数的返回值确定了组件是否需要重新渲染。函数默认返回true,表示组件的props或者state修改,就会重新构建virtual dom,然后使用diff算法进行比较,根据比较结果来决定是否需要重新渲染组件。如果返回false则表示,不需要重新渲染。

PureRenderMixin

react官方提供了PureRenderMixin插件,插件的功能是在不必要的情况下让shouldComponenUpdate返回false,减少不需要的渲染开销。

Immutable.js

对于复杂的数据比较是很费时的,使用Immutable.js在shouldComponentMixin中,可以提升react性能。

相关文章

  • 避免react重新渲染

    前段时间一个面试官问我如何避免react重新渲染,当场很懵逼,因为看深入浅出react技术栈这本书的时候,是酱紫讲...

  • 性能优化

    React:react:key-diffshouldComponentUpdate-避免无意义state渲染服务端...

  • 4.React中Memo实现指定组件进行渲染

    memo可以解决react渲染时的效率问题,react可以将数据渲染在视图中,如果数据没有变化,视图还是重新渲染。...

  • 性能优化

    react:key-diffshouldComponentUpdate-避免无意义state渲染服务端渲染 ren...

  • 2019-07-16

    react-native TabNavigator 切换时不重新渲染 react-native 使用 create...

  • react-native中统计组件渲染次数

    性能优化的很大一个点就是避免组件重复渲染。在react中有很多统计组件重复渲染的工具,但是react-native...

  • react-native项目使用flatList后state值改

    react-native项目使用flatList后state值改变,不重新渲染页面的问题 react-native...

  • immutable.js笔记

    介绍 immutable不可变对象,react使用它性能很容易提升很多。react提升性能的关键点就是避免重复渲染...

  • React、Vue、小程序更新数据并渲染大比较

    今天我们来谈谈在react、vue、小程序中是如何更新数据并渲染组件的 React React中,直接赋值不会重新...

  • react小记1(react的工作原理)

    react应用是通过重复渲染来实现用户交互,利用virtualDOM,让每次渲染都支重新渲染最少的DOM。 web...

网友评论

      本文标题:避免react重新渲染

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