reactjs - Redux + React Native 将产品添加到购物车不起作用
问题描述
我是本机反应的新手,我正在尝试使用 redux 实现添加到购物车功能,当将整个产品传递到购物车时它正在工作,但这不是我想要的,因为我必须添加数量和输入用户选择的每个产品的文本,(使用户能够在结帐前填写它们)。这是主要代码(通过整个产品时工作正常)
const initialState = {
cart: [],
total: 0,
}
...
case ADD_TO_CART:
return {
...state,
cart: [action.payload, ...state.cart],
total: state.total + action.payload.price
}
...
这就是我现在正在尝试的
const initialState = {
cart: [],
addCart: {
meal_id: '',
name: '',
price: '',
quantity: 1,
meal_details: ''
},
total: 0,
}
case ADD_TO_CART:
return {
...state,
addCart: {
meal_id: action.payload.id,
name: action.payload.name,
price: action.payload.price,
quantity: 1,
meal_details: ''
},
cart: [this.addCart, ...state.cart],
total: state.total + action.payload.price
}
但它给出了错误,
this.addCart
将未定义添加到购物车数组中,我尝试addCart
返回找不到变量 addCart 并且我使用state.addCart
它将第一项添加为空 arr 并且每当我单击另一个产品添加它时添加最后一个单击
解决方案
访问 Redux 状态时,没有this
. 此外,当您尝试更改对象时,您无法访问对象的属性,这也是您的主要代码有效但第二个代码段无效的原因。修复代码的最简单解决方案是addCart
从您的状态中删除,因为数据等同于您的action.payload
,然后在 reducer 中单独创建 addCart 对象。
const initialState = {
cart: [],
total: 0,
}
case ADD_TO_CART:
let addCart = {
meal_id: action.payload.id,
name: action.payload.name,
price: action.payload.price,
quantity: 1,
meal_details: ''
}
return {
...state,
cart: [addCart, ...state.cart],
total: state.total + action.payload.price
}
推荐阅读
- android - NotificationChannel - 如何显示通知一段时间然后隐藏它?
- entity-framework - 内存缓存 .Net Core 不保留值
- angularjs - 通过 tooltip-is-open 属性隐藏工具提示不起作用
- javascript - 在 vue2-google-maps 中围绕一个点画一个圆圈
- html - 为什么我的 CSS 星形图层没有正确对齐?
- wordpress - 基于高级自定义字段是否为该用户设置为 true 的 Wordpress 自定义登录错误
- python - 如何在我没有看到有我要抓取的代码的网页中使用 scrapy 获取数据
- xcode - 为什么 CocoaPods 目标有构建设置?
- javascript - 无法在本地运行新创建的机器人 - 读取机器人文件时出错
- pandas - 内存泄漏合并 2 Pandas 数据框