react-redux areStatesEqual从不触发

时间:2018-08-10 18:09:34

标签: javascript react-redux

我试图限制react-rexdux connect()触发重新渲染的次数。我在这里看过文档...

https://github.com/reduxjs/react-redux/blob/master/docs/api.md

...,据推测,有一种方法可以通过为areStatesEqual编写自己的config选项功能来防止重新渲染。问题是,我简单的console.log测试显示此选项从不触发!不知道我在做什么错。关于此功能的文档很少,甚至没有一个示例。

export const mapStateToProps = (state, ownProps) => Object.assign({
  isMobileLayout: state.deviceWidthReducer.width < 480,
  postalCode: state.userReducer.postalCode,
  productImageGroup: state.productReducer.productImageGroup,
  productId: '05047234',
}, ownProps);

export default connect(
  mapStateToProps,
  null,
  null,
  {
    pure: true,
    areStatesEqual: (next, prev) => {
      console.log('areStatesEqual?'); // <-- THIS NEVER GETS LOGGED.
      return next.productId === prev.productId;
    },
  },
)(Product);

在开发工具中设置断点,也不会触发断点。 enter image description here

1 个答案:

答案 0 :(得分:0)

https://github.com/reduxjs/react-redux/issues/592-这可能是相关的/解释不清或误导;)

尝试使用undefined而不是null吗?但是我不知道这很重要。

使用“标准” shouldComponentUpdate优化吗?