React Native项目中Redux购物车Action无法派发给Reducer的问题
解决Redux Action无法触发Cart Reducer的问题
我帮你排查了代码里的几个关键问题,这些应该就是导致Action派发出了但Reducer没响应的原因:
1. 常量导入方式错误
你的Cart Reducer里导入ADD_TO_CART常量的方式不对。在Action文件里,你用的是命名导出(export const ADD_TO_CART),但Reducer里却用了默认导入,这会导致ADD_TO_CART的值为undefined,Switch语句根本匹配不到对应的case分支。
修复代码:
将Reducer里的导入语句从:
import ADD_TO_CART from '../actions/cart'
改为:
import { ADD_TO_CART } from '../actions/cart'
2. CartItem未定义
你在Reducer里直接使用了new CartItem(),但代码中完全没有这个类的定义或导入,这会抛出运行时错误,导致Reducer执行中断,无法返回更新后的状态。
修复方案:
用普通JavaScript对象代替CartItem类,比如:
// 已有商品的情况 updatedCartItem = { quantity: state.items[addedProduct.id].quantity + 1, price: prodPrice, title: prodTitle, sum: state.items[addedProduct.id].sum + prodPrice }; // 新商品的情况 updatedCartItem = { quantity: 1, price: prodPrice, title: prodTitle, sum: prodPrice };
3. 初始状态变量拼写错误
虽然这个不会直接导致Action不触发,但会影响初始状态的正确性,建议修正:
将initalState改为initialState:
const initialState = { items: {}, totalAmount: 0 };
修改完这三个问题后,再次测试添加购物车的操作,你应该能看到Reducer里的console.log('prodPrice')输出,同时Redux Store中的Cart状态也会正常更新了。
内容的提问来源于stack exchange,提问作者m4nik 1
相关产品推荐
相关产品推荐

