React / Redux:mapStateToProps()被多次调用

时间:2018-11-13 09:07:29

标签: reactjs redux react-redux

我正在使用React / Redux编写简单的应用程序。我注意到函数mapStateToProps()被多次调用。这是代码:

class Employees extends React.Component {
    componentDidMount() {
        this.props.fetchEmployees();
    }
}

let mapStateToProps = function mapStateToProps(state) {
    console.log("foo");
    return {...};
};

let mapDispatch = (dispatch) => {
    return {
        fetchEmployees: bindActionCreators(fetchEmployees, dispatch)
    };
};

export default connect(mapStateToProps, mapDispatch)(Employees);

以及我在控制台中得到的内容:

enter image description here

是正常现象还是做错了什么?

1 个答案:

答案 0 :(得分:2)

任何时候,redux的状态都会发生变化,或者容器的父组件会重新渲染mapStateToProps。但是,只要mapStateToProps返回的数据以及接收到的道具没有变化,这都不会导致组件的渲染再次调用。

如果您在mapStateToProps中进行了一些计算,并返回一个值,请确保使用记忆函数来进行该计算,或者确保使用reselect来编写memoized selectors,以便相同即使多次调用mapStateToProps,也会为同一计算返回值