首页 > 解决方案 > 可以连接 PureComponent 吗?

问题描述

我想知道这是否可以:

import React, { PureComponent } from "react";
import { Text, TouchableOpacity } from "react-native";
import { connect } from "react-redux";
import PropTypes from "prop-types";

class ListItem extends PureComponent {
  render() {
    return (
      <TouchableOpacity>
        <Text style={{ color: "red" }}>Some Text</Text>
        <TouchableOpacity />
      </TouchableOpacity>
    );
  }
}

export default connect()(ListItem);

而且比可能添加mapStateToProps(). 或者这是一个反模式?我听说 PureComponents 会降低性能...

标签: reactjsreact-nativereduxreact-reduxreact-component

解决方案


实际上connect()function 默认情况下使包装的组件成为纯组件(请参阅docs)。也就是说,只有当属性发生变化(状态或自己的道具)时,才会重新渲染被包装的组件。所以从 PureComponent 继承是没有意义的,因为shouldComponentUpdate逻辑已经在由connect().

我听说 PureComponents 会降低性能...

PureComponent 执行的浅 props 比较是相对便宜的操作。我不认为这会是一个问题。


推荐阅读