Почему все функции редуктора выполняются во время выполнения? - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь получить глубокие знания с помощью React + Redux + thunk

Учтите, в этом случае я использую response-redux и redux-thunk!

Например, яв моем приложении 2 редуктора:

function loadingReducer(state = false, action) {
    console.log('loadingReducer');
    
    switch(action.type) {
        case 'LOADING':
            return action.loading
        default:
            return state
    }
}

function itemsReducer(state = [], action) {
    console.log('itemsReducer');
    
    switch(action.type) {
        case 'ITEMS':
            return action.data
        default:
            return state
    }
}

Во время выполнения все функции выполняются, и у меня есть 4 console.log в консоли браузера для каждого редуктора и, наконец, шесть console.log, это означает, что редукс выполнил и проверил шестьраз функции редуктора, и я думаю, что это не оптимизированная производительность для крупномасштабного проекта ...

Итак, главный вопрос, есть ли хитрость для решения этой проблемы, или я должен использовать другие пакеты, такие как saga или mobx, чтобысправиться?

спасибо

Ответы [ 2 ]

2 голосов
/ 03 июня 2019

Причиной работы всех журналов консоли является то, как работает combineReducers, что, по сути, должно проходить через код каждого редуктора.Но большая часть этого не выполняется, так как находится внутри оператора switch.Так что это не создает проблем с производительностью.

Если вы говорите о нескольких журналах в начале приложения ... это происходит потому, что redux отправляет 2-3 действия в начале приложения (что,как указано выше, все журналы будут запущены. Вы можете проверить их, зарегистрировав само действие в одном из этих редукторов с помощью console.log(action).

В общем, если у вас не много кода внепоменяйте операторы в ваших редукторах, тогда все будет в порядке, что в любом случае сработает, так как при избыточном толковании большая часть вашего кода должна идти в ваших действиях, в то время как редукторы просто меняют состояние.

1 голос
/ 03 июня 2019

Все редукторы вызываются каждый раз, когда отправляется действие, т. Е. Изменяется состояние приложения.

Любой редуктор может выбрать прослушивание любого действия и обновить его состояние, если он этого хочет.Когда редукторы прикреплены к магазину, они отвечают за обработку части приложения.

Вариант использования этого может быть следующим: при наличии редуктора корзины, редуктора страницы покупок и страницы покупок.

shopping page отправляет действие, сообщающее, что товар был добавлен в корзину.Страница редуктора для покупок прослушивает это и обновляет состояние товаров, указывая зеленым цветом, что оно было добавлено в корзину

. cart reducer, отвечающий за значок корзины, также получает это сообщение и обновляет счет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...