Редукторы: ориентированные на действие редукторы или структурно-ориентированные редукторы? - PullRequest
0 голосов
/ 31 декабря 2018

Разумнее ли выровнять редукторы с действиями, которые они выполняют, или с частью магазина, которую они обновляют?

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

Что касается фона, то приложение, которое я структурирую, нетривиально и опирается на базу данных SQL (в отличие от NoSQL), что оказало влияние на то, как мы можем разумно структурировать данные, поступающие из серверной части.Он должен будет обрабатывать полдюжины различных нетривиальных вариантов использования, таких как опрос, резервирование событий и управление ими, лотереи и т. Д.

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

{
    "usersByID": {
        "aef1345ecb986": {
            "eventIDs": [
                "1256",
                "1876",
                "0010"
            ]
        }
        // obviously lots more users
    },
    "eventsByID": {
        "1256": {//stuff},
        "1876": {//stuff},
        "0010": {//stuff}
        // lots more events too
    }
}

Однако при использовании выровненных по магазину редукторов это означало бы, что функция корневого редуктора будет выглядеть примерно так:их общая категория, хранящаяся в action.class, будет выглядеть примерно так:

function rootReducer(state, action) {
    switch (action.class) {
        case POLLING:
            return pollingReducer(state, action)
        case EVENTs:
            return eventsReducer(state, action)
        default:
            return defaultReducer(state, action)
    }
}

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

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

...