У меня есть это состояние:
- пользователи: [{money: 1}]
- продукты: [{id: 'x', цена: 5}, {id:'y', цена: 1}]
- купленоПродукты: []
Я хочу добавить действие {type: "buyProduct", productId: "x"}
, которое добавит новый продукт и вычтет деньги у пользователя,Но у меня есть 3 разных редуктора для каждой ветви (пользователи / продукты / купленные продукты).
Допустим, теперь я добавляю новый продукт "х", который стоит 5, он не должен удалять деньги и не должен добавлятьпродукт также.Обратите внимание, что 5 из отрасли продуктов.Таким образом, пользователи и приобретенные продукты не могут определить цену по самой акции, поскольку она содержит только идентификатор, а не цену.
Мой реальный пример немного сложнее, но похож по своей природе.
Решения:
- A) Одно из решений состоит в том, чтобы иметь корневой редуктор для всех ветвей, но он не выглядит правильным.Любые другие решения?
- B) Есть еще одно действие "requestPurchase", и это вычислит, могу ли я купить продукт или нет.Проблема заключается в том, что могут возникнуть проблемы с параллелизмом, если одновременно есть 2 requestPurchase, поскольку это позволит обоим действиям проходить, даже если денег недостаточно.