我正在尝试使用重新选择选择器作为另一个选择器的参数:
import { createSelector } from 'reselect'
const productsSelector = state => {
return state.get('searchResults').get('products')
}
export const getSelectedProduct = createSelector(
productsSelector,
(products) => {
const selected = products.filter(product => product.shop.selected)
return selected[0]
}
)
export const getSelectedProductProduct = createSelector(
getSelectedProduct,
prod => {
const x = prod ? prod.products ? prod.products.find(produc => produc.selected) : getSelectedProduct : {}
if(prod) {
console.log(prod)
if ('prod', prod.products) {
console.log(prod.products)
if (prod.products.find(produ => produ.selected)) {
console.log('sel prod', prod.products.find(produ => produ.selected))
}
}
}
console.log(x)
}
)
getSelectedProduct
正在工作,并在更新时进行更新。但是getSelectedProductProduct
没有执行。我做错了什么?
它们用在一个组件中:
const mapStateToProps = (state) => ({
region: state.get('map').get('region'),
markers: state.get('searchResults').get('products'),
selectedProduct: getSelectedProduct(state),
selectedProductProduct: getSelectedProductProduct(state)
})
动作差异
还原状态
导致顶部图像中的差异的redux操作不会导致getSelectedProductProduct
执行。我不认为该组件知道其字段已更改。我正在进一步调查这个问题。想知道该字段是否嵌套太深,以便组件注册更改。