Redux: это анти-паттерн - помещать много логик c и делить дату между редукторами слайсов в thunks? - PullRequest
0 голосов
/ 22 марта 2020

В Руководстве по стилю Redux настоятельно рекомендуется до Максимально логизировать c, насколько это возможно в редукторах :

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

В чем я не уверен, так это в том случае, если thunks также считается «кодом» какого-то рода. Кроме того, мы также (неправильно?) Использовали thunks для получения данных из других слоев состояния.

Гипотетически упрощенный фрагмент кода такого thunk:

const addX = x => (dispatch, getState) => {
    const { data, view } = getState();
    const { y } = view; // <-- here accessing data from `view` state.

    const yy = doSomeLogicWith(y);
    const z = doSomeMoreLogicWith(yy);

    dispatch({ type: 'data/xAdded', payload: { x, z } });
};

Считается ли это на самом деле быть анти-паттерном в Redux? Если да, то каковы недостатки этого?

1 Ответ

1 голос
/ 23 марта 2020

Да, thunk будет квалифицироваться как «код, отправляющий действие» для этого случая. Итак, здесь правило рекомендует следующее: если возможно, действие будет содержать y, и в идеале вызовы функций doSomeLogicWith(y) и doSomeMoreLogicWith(yy) будут существовать внутри редуктора.

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

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

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