react-redux areStatesEqual从不触发

最后发布: 2018-08-10 18:09:34


问题

我试图限制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);

在开发工具中设置断点,也不会触发该断点。 在此处输入图片说明

javascript react-redux
回答

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

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

使用“标准”的shouldComponentUpdate优化?