加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

React学习之扩展PureRenderMixin(三十三)

发布时间:2020-12-15 07:26:50 所属栏目:百科 来源:网络整理
导读:PureRenderMixin 的出现早于 React.PureComponent ,该插件属于历史保留,现在就使用 React.PureComponent 吧,这里也就提一下 如果你的 React 组件的渲染函数是一个纯函数也就是说对于相同的值返回一样的结果同时不影响元素局,在某些场景下,你可以利用这

PureRenderMixin的出现早于React.PureComponent,该插件属于历史保留,现在就使用React.PureComponent吧,这里也就提一下

如果你的React组件的渲染函数是一个纯函数也就是说对于相同的值返回一样的结果同时不影响元素局,在某些场景下,你可以利用这个插件来极大地提升性能。

var PureRenderMixin = require('react-addons-pure-render-mixin');
React.createClass({
  mixins: [PureRenderMixin],render: function() {
    return <div className={this.props.className}>foo</div>;
  }
});

在底层,该插件实现了shouldComponentUpdate,在这里面,它比较当前的propsstate和接下来的propsstate,当两者相等的时候返回false,不进行更新。

ES6版本

import PureRenderMixin from 'react-addons-pure-render-mixin';
class FooComponent extends React.Component {
  constructor(props) {
    super(props);
    this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);
  }

  render() {
    return <div className={this.props.className}>foo</div>;
  }
}`

注意

仅仅是浅比较对象。如果对象包含了复杂的数据结构,深层次的差异可能会产生误判。仅用于拥有简单propsstate的组件,或者当你知道很深的数据结构已经变化了的时候使用forceUpdate()。或者,考虑使用immutable objects(不变数据)来帮助嵌套数据快速比较。
[shouldComponentUpdate会跳过更新整个组件子树。确保所有的子组件也是“纯粹的”]这套路不多说。

下一篇将讲React中的浅比较

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读