У меня есть компонент с подключением к редуксу, который использует createStructuredSelector следующим образом:
const mapStateToProps = state =>
createStructuredSelector({
fruits: selectShopFruits(),
});
У меня есть ряд селекторов, которые все сочиняются друг с другом (линейно сверху вниз 1-> 2-> 3-> 4 ):
const selectDomain = () => state => {
console.info('(1)')
return state ? state.shops : {};
};
export const selectShop = () =>
createSelector(
selectDomain(),
shops => {
console.info('(2)');
return shops.shopList.find(shop => shop.selected)
}
);
export const selectShopInventory = () =>
createSelector(
selectShop(),
shop => {
console.info('(3)')
return shop.inventory
}
);
export const selectShopFruits = () =>
createSelector(
selectShopInventory(),
inventory => {
console.info('(4)')
return inventory && inventory.food ? inventory.food.fruits: []
}
);
Моя проблема заключается в том, что selectShopFruits не вызывается при обновлении inventory.food.fruit s.Мой inventoy.food.fruit обновляется моим редуктором, но селектор не вызывается.
Мой вывод выглядит примерно так:
(1)
(2)
(3)
(4)
UPDATING INVENTORY IN REDUCER!!!!!!!!!!!!!!!!!!
(1)
(2)
Самое смешное, если я пишуmy mapStateToProps выглядит так:
const mapStateToProps = state => {
return {
fruits: selectShopFruits()(state),
};
};
Это ДЕЙСТВУЕТ Работа.
И мой вывод выглядит примерно так:
(1)
(2)
(3)
(4)
UPDATING INVENTORY IN REDUCER!!!!!!!!!!!!!!!!!!
(1)
(2)
(3)
(4)
Почему мойcreateStructuredSelector не работает?Неужели некое «глубокое равенство» терпит неудачу?