Changelog
v1.0.0-alpha - 2015/09/01
createSelectorCreator
takes a user specified memoize function instead of a custom valueEqualsFunc
.
import { isEqual } from 'lodash'
import { createSelectorCreator } from 'reselect'
const deepEqualsSelectorCreator = createSelectorCreator(isEqual)
import { isEqual } from 'lodash'
import { createSelectorCreator, defaultMemoize } from 'reselect'
const deepEqualsSelectorCreator = createSelectorCreator(defaultMemoize, isEqual)
Selector creators can receive a variadic number of dependencies as well as an array of dependencies.
const selector = createSelector(
[state => state.a, state => state.b],
(a, b) => a * b
)
const selector = createSelector(
state => state.a,
state => state.b,
(a, b) => a * b
)
ownProps
in SelectorSelector dependencies can receive a variadic number of parameters allowing a selector to receive ownProps
passed from mapToProps
in connect
.
const selector = createSelector(
state => state.a,
(state, props) => state.b * props.c,
(_, props) => props.d,
(a, bc, d) => a + bc + d
)
import { createSelectorCreator } from 'reselect'
import memoize from 'lodash.memoize'
let called = 0
const customSelectorCreator = createSelectorCreator(memoize, JSON.stringify)
const selector = customSelectorCreator(
state => state.a,
state => state.b,
(a, b) => {
called++
return a + b
}
)
assert.equal(selector({ a: 1, b: 2 }), 3)
assert.equal(selector({ a: 1, b: 2 }), 3)
assert.equal(called, 1)
assert.equal(selector({ a: 2, b: 3 }), 5)
assert.equal(called, 2)