Разбираюсь с Redux на примере несложного приложения Shopping cart.
1.
Не могу понять, можно ли использовать 1 диспетчер для различных задач?
Например, мне нужно добавить товар в корзину и при этом изменить свойство объекта (продукта) с false ("Не в корзине") на true ("В корзине").
case ADD_PRODUCT:
action.product.added = true; <---------- ???
action.product.id = state.products.length + 1;
return Object.assign({}, state, {
products: state.products.concat(Object.assign({}, action.product))
})
}
Или правильно будет создать для этой задачи ещё один диспетчер (при условии, что добавление / удаление товара всегда сопровождается присваиванием true / false)?
В похожих топиках, которые находил, однозначного мнения не было. Вроде, как удобно, так и делай.
2.
Правильно ли использовать для отображения блока по принципу show / hide Redux? Т.е., у меня есть span, где отображается "Добавить в корзину". Как только товар оказывается в корзине, мне нужно показать другой span "Добавлено".
Почему Redux, т.к. при переходе на другую вкладку приложения предыдущие данные сбиваются. Т.е., если я уйду со страницы с товарами, при возвращении под всеми товарами, даже под теми, которые уже в корзине, будет снова span "Добавить в корзину".
Как решить этот момент правильно?