【发布时间】:2017-03-28 14:32:49
【问题描述】:
场景:
考虑 3 个字段:quantity、singlePrice、totalPrice。
我需要它们都是我表单中的字段,但是每次我通过您可以想象的简单操作更改数量或 singlePrice 时都必须重新计算 totalPrice..
我做了什么:
创建了一个由数量字段的 onChange 事件触发的函数和另一个用于 singlePrice 字段的函数。
-
上面的函数调用了一个带有如下负载的 redux 操作:
{ name: name_of_the_updated_field, value: new_field_value } 该操作由 formReducer plugin 进行计算并返回更新后的值对象。
问题: 我的 redux 商店没有更新,我的表单也没有更新。
我的表单缩减器(我必须更新的属性在另一个属性中)。
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;
}
},
});
我错过了什么吗?如何解决这个问题? 有没有更简单的方法来得到这个结果?
非常感谢任何帮助!
【问题讨论】:
标签: javascript forms reactjs redux-form