重新选择始终重新渲染

时间:2016-05-20 20:25:02

标签: javascript reactjs reselect

我试图在我的反应代码中添加重新选择但似乎总是重新渲染。

每当我改变我的状态时,控制台都会打印"测试"即使输入选择器没有改变。我创建了一个简单的测试来向你们展示发生了什么。

import { connect } from 'react-redux'
import { createSelector } from 'reselect'

window.testObject = {'x': '5'}
const mapStateToProps = (state, props) => {

  const test = state => {return window.testObject}
  const getTest = createSelector(test, (t)=> console.log('testing'))

  return {
      test: getTest(state),
  }
}


export default const TestContainer = connect(
  mapStateToProps,
)(TestBase)

我做错了什么?我继续阅读文档,从我可以告诉console.log不应该在第一次运行后运行,因为输入选择器没有改变。我理解正确吗?

1 个答案:

答案 0 :(得分:6)

每次重新呈现时,您都会调用createSelector

createSelector移到mapStateToProps

之外
const getTest = createSelector(...)

const mapStateToProps = (state, props) => ({
  test: getTest(state),
})

export default const TestContainer = connect(
  mapStateToProps,
)(TestBase)