Сцена:
Подумайте о трех полях: quantity
, singlePrice
, totalPrice
. Мне нужно, чтобы все они были полями в моей форме, но totalPrice должен пересчитываться каждый раз, когда я изменяю количество или singlePrice с помощью простой операции, которую вы можете себе представить.
Что я сделал:
создал функцию, запускаемую событием onChange для поля количества, и еще одну для поля singlePrice.
приведенная выше функция вызывает действие redux с такой полезной нагрузкой:
{ name: name_of_the_updated_field, value: new_field_value }
это действие подхватывается плагином formReducer, который делает вычисления и вернуть обновленный объект значения.
Проблема: ни мой магазин редуксов, ни моя форма не обновляются.
Мой редуктор формы (свойство, которое мне нужно обновить, находится внутри другого свойства).
import { reducer as formReducer } from 'redux-form';
export default formReducer.plugin({
formName: (state, action) => {
switch (action.type) {
case 'CALC_TOTAL_PRICE':
return {
...state,
values: {
...state.values,
competences: state.values.competences.map((c, i) => {
if (i === action.payload.index) {
const { name, value } = action.payload;
const next = Object.assign({}, c);
next[name] = value;
next.totalPrice = next.quantity * next.singlePrice
return next;
}
return c;
}),
},
};
default:
return state;
}
},
});
Я что-то упускаю? Как это исправить? Есть ли более простой способ получить этот результат?
Любая помощь очень ценится!