Я работаю с React & Redux и пытаюсь реализовать корзину (это тестовый проект). Я получаю массив с товарами, который выглядит так:
products: [
{
name: "Product one",
count: 1,
price: 100,
},
{
name: "Product two",
count: 1,
price: 200,
},
]
В корзине я его отображаю. Есть возможность увеличить количество товаров и отобразить общую сумму в зависимости от того, сколько единиц товара вы выбрали. Например, 2 единицы товаров стоимостью 100, сбоку будет всего 200. Но поскольку я работаю с LocalStorage, сумма изменится только после того, как я обновлю sh страницу. Как исправить эту ошибку? Если требуется более подробная информация, просьба сообщить.
Ковш
<div className="bucket">
{this.props.products.map((value,index)=>{
return(
<div className="product">
<h3>{value.price}</h3>
<div className="count">
<input type="number" value={value.count} onChange={this.props.handleChange}/>
<button onClick={()=>this.props.increase(value,this.props.products)}>+</button>
</div>
<h3>{value.price*value.count}</h3>
</div>
)
})}
</div>
function mapStateToProps(state){
return{
products: state.Stack.products,
}
}
function mapDispatchToProps(dispatch){
return{
handleChange: (value)=>dispatch(handleChange(value)),
increase: (product,products)=>dispatch(increase(product,products)),
}
}
Действие
export function increase(product,products){
return(dispatch)=>{
products.map((value)=>{
if(value == product){
value.count ++;
}
})
dispatch(newProducts(products));
}
}
export function newProducts(products){
return{
type: NEW_PRODUCTS,
products
}
}
Редуктор
const initialState ={
products: [
{
name: "Product one",
count: 1,
price: 100,
},
{
name: "Product two",
count: 1,
price: 200,
},
]
}
export default function (state = initialState, action){
switch(action.type){
case HANDLE_CHANGE:
return{
...state, value: action.value.target.value
}
case NEW_PRODUCTS:
return{
...state, products: action.products
}
default:
return state
}
}
Спасибо!