Реагировать Redux хранить вычисления в редуктор или action-creator? - PullRequest
0 голосов
/ 17 сентября 2018

Я изучаю React и Redux, создавая приложение, которое содержит массив данных на основе времени: разрешенное время и прошедшее время.

[1] : {
  time: 10,
  elapsed: 0
},
[2] : {
  time: 15,
  elapsed: 0
},
[3] : {
  time: 20,
  elapsed: 0
}

Если какие-либо предметы идут по расписанию, я хочу пересчитать время для последующих предметов. Например. пункту 1 разрешено 10 секунд, но , если пункт 1 занимает 12 секунд Я хочу компенсировать это время из пунктов 2 и 3.

[1] : {
  time: 10,
  elapsed: 12
},
[2] : {
  time: 14,
  elapsed: 0
},
[3] : {
  time: 19,
  elapsed: 0
}

Где мне выполнить этот расчет? Я чувствую, что самым простым местом для этого будет редуктор, но я также думаю, что редукторы должны быть максимально простыми? Это правильно?

Так должны ли вычисления идти в создателе действий, а затем в магазин передается новый массив предметов?

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

ИМО это должно быть сделано в редукторах.

Действие не должно знать, каков будет эффект отправленного действия, восстановитель отвечает за возврат нового состояния как результат отправленного действия.

0 голосов
/ 17 сентября 2018

Цитирование из оригинальной Документации Redux .

Не существует однозначного четкого ответа на вопрос, какие кусочки логики следует использовать в редукторе или создателе действия.Некоторые разработчики предпочитают иметь «толстых» создателей действий с «тонкими» редукторами, которые просто принимают данные в действии и вслепую объединяют их в соответствующее состояние.Другие стараются сделать как можно меньше действий и сводят к минимуму использование getState () в создателе действий.(Для целей этого вопроса другие асинхронные подходы, такие как саги и наблюдаемые, попадают в категорию «создатель действий».)

Есть несколько потенциальных преимуществ от использования большего количества логики в ваших редукторах.Вероятно, что типы действий будут более семантическими и более значимыми (например, «USER_UPDATED» вместо «SET_STATE»).Кроме того, наличие большего количества логики в редукторах означает, что отладка путешествий во времени будет влиять на большую функциональность.

0 голосов
/ 17 сентября 2018

Вы можете использовать промежуточное ПО для этой цели.

...