Где изменить данные для реагирующего компонента в редуксе?

У меня есть массив отчетов с датами, полученными через приставку, и я хочу сгруппировать их по месяцам, а затем по таким дням:

January 2017 (header)
15th report 1
     report 2 (also the 15th)
February 2018
1st report 3
4th report 4

Я думаю, что я должен отсортировать отчеты в новый массив / объект с месяцем, а затем с днями, чтобы я мог передать их компонентам реагирования без необходимости выяснения, есть ли что-то в одном месяце или дне того же года. Или я должен просто отсортировать, а затем оценить его на уровне компонентов?

Я думал о сортировке и создании нового массива в mapStateToProps компонента контейнера для всего этого. Это правильное место, чтобы сделать это?

1 ответ

Решение

Я думаю mapStateToProps лучшее место для этого.

Ранее (в редукторе) нарушается правило отсутствия побочных эффектов. Позже (в компоненте) должно быть в componentWillReceiveProps метод жизненного цикла - или у вас может возникнуть соблазн поместить его в render или метод, вызванный render (что является наихудшим сценарием!).

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

Другие вопросы по тегам