Redux网站上有一篇关于重新 Select 图书馆的 Select 器备忘录的文章,其中提供了下一个例子:
const state = {
a: {
first: 5
},
b: 10
}
const selectA = state => state.a
const selectB = state => state.b
const selectA1 = createSelector([selectA], a => a.first)
const selectResult = createSelector([selectA1, selectB], (a1, b) => {
console.log('Output selector running')
return a1 + b
})
const result = selectResult(state)
// Log: "Output selector running"
console.log(result)
// 15
const secondResult = selectResult(state)
// No log output
console.log(secondResult)
// 15
总体而言,这个例子很清楚,除了selectA1
Select 器.
Redux Docs表示
当您调用 Select 器时,Reselect将使用您给出的所有参数运行您的输入 Select 器,并查看返回值.如果任何结果=与以前不同,它将重新运行输出 Select 器,并将这些结果作为参数传递.
所以,如果我们提供state.a
,这是对象,作为selectA1
的输入 Select 器,它将不通过===
判断,并每次运行a => a.first
,对吗?还是我误解了什么?