javascript - 如何在不刷新页面的情况下更新购物篮中的产品数量?
问题描述
我使用 React & Redux 并尝试实现一个篮子(这是一个测试项目)。我得到一个包含如下产品的数组:
products: [
{
name: "Product one",
count: 1,
price: 100,
},
{
name: "Product two",
count: 1,
price: 200,
},
]
在篮子里我映射它。有机会增加产品数量并根据您选择的商品数量显示总金额。比如2个100元的产品,侧面一共是200元。但是因为我用的是LocalStorage,所以刷新页面后数量才会改变。我该如何解决这个错误?如果需要更详细的信息,请告知。
桶
<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
}
}
谢谢!
解决方案
当您创建新产品时,我认为将其附加到现有产品数组中会更好
而不是喜欢
case NEW_PRODUCTS:
return{
...state, products: action.products
}
你试试怎么样
case NEW_PRODUCTS:
return{
...state, products: [...state.products, action.products]
}
如果action.products
是一个包含多个产品的数组,请确保使用扩展运算符来确保您单独推送每个产品
在这种情况下,该行将products: [...state.products, action.products]
更改为products: [...state.products, ...action.products]
请让我知道这是否回答了您的问题。
推荐阅读
- android - 添加phonegap-plugin-barcodescanner后无法构建cordova android projet
- python - 谷歌云计算引擎 15% 限制
- angular - Typescript 事件类型注解
- swift - 从 Realm 过滤结果
- python - 仅对某些行求和两个不同大小的熊猫数据框的列
- java - 引用对象变量如何调用私有方法
- sql - 为什么获取错误缺少右括号
- javascript - javascript错误。密码和确认密码具有相同的值,但仍然显示错误
- php - 从 wordpress 文件和文件夹中删除 wp- 前缀
- python-3.x - IndexError:将变量传递给 SQL 函数的 Python 函数时,元组超出范围