Повторно выберите createStructuredSelector не обновляется - PullRequest
0 голосов
/ 19 марта 2019

У меня есть компонент с подключением к редуксу, который использует 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 не работает?Неужели некое «глубокое равенство» терпит неудачу?

...