С помощью кода я предоставлю вам, как я могу вычислить итоговую сумму и промежуточную сумму в форме редукса?
const calculatedSubtotal = (detail,quantity,price) =>{
detail = [];
const subtotals = [];
detail.map((detailItem,index) =>{
detailItem[index].quantity = quantity;
detailItem[index].product.price = price;
subtotals[index] = detailItem[index].quantity * detailItem[index].product.price;
return subtotals[index];
})
}
const calculatedTotal = (detail,quantity,price) =>{
detail = [];
let total = 0;
const subtotals = [];
detail.map((detailItem,index) =>{
detailItem[index].quantity = quantity;
detailItem[index].product.price = price;
subtotals[index] = detailItem[index].quantity * detailItem[index].product.price;
total += subtotals[index];
})
return total;
}
componentDidUpdate(prevProps,prevState,snapShot){
const {change} = prevProps;
const {detail,quantity,price} = prevProps;
if(this.props.detail !== prevProps.detail && this.props.quantity !== prevProps.quantity &&
this.props.price !== prevProps.price){
change(`detail[${this.props.index}].subtotal`,calculatedSubtotal(detail,quantity,price));
change('total',calculatedTotal(detail,quantity,price));
}
}
const valueSelector = formValueSelector('bill');
const makeStateToProps = () =>{
const mapStateToProps = (state,props) =>{
return {
detail: valueSelector(state,
`detail[${props.index}].quantity`,`detail[${props.index}].product.price`,
`detail[${props.index}].subtotal`
),
quantity: valueSelector(state,`detail[${props.index}].quantity`),
price: valueSelector(state, `detail[${props.index}].product.price`)
}
}
return mapStateToProps;
}
Я ошибся в предыдущем посте, потому что пропустил два аргумента: количество и цену.
Дополнительную информацию можно найти в Как вычислить итоговые и промежуточные итоги в редуксной форме, используя formValueSelector
Может быть, я выхожу из системы ввода данных моих функций selectedSubtotal и selectedTotal