我正在使用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);
以及我在控制台中得到的内容:
是正常现象还是做错了什么?
答案 0 :(得分:2)
任何时候,redux的状态都会发生变化,或者容器的父组件会重新渲染mapStateToProps
。但是,只要mapStateToProps返回的数据以及接收到的道具没有变化,这都不会导致组件的渲染再次调用。
如果您在mapStateToProps
中进行了一些计算,并返回一个值,请确保使用记忆函数来进行该计算,或者确保使用reselect
来编写memoized selectors
,以便相同即使多次调用mapStateToProps
,也会为同一计算返回值