javascript - 为什么 ReduxDevTools 不更新购物车操作?
问题描述
我正在使用 react-redux 构建一个电子商务应用程序,并且正在实施购物车操作。我对产品操作执行了相同的步骤,但购物车操作不会在 ReduxDevTools 上更新。你认为我还有什么可能遗漏的吗?”</p>
购物车操作:
import Axios from 'axios';
import {CART_ADD_ITEM} from '../constants/cartConstants';
export const addToCart = (productId,qty) => async (dispatch,getState) =>{
//generamos una Ajax request al backend con get para traer la info de un producto, await por que espera una respuesta.
const {data} = await Axios.get(`api/products/${productId}`);
dispatch({
type: CART_ADD_ITEM,
payload: {
name: data.name,
image: data.image,
price: data.image,
countInStock: data.countInStock,
product: data._id,
qty,
},
});
localStorage.setItem('cartItems', JSON.stringify(getState().cart.cartItems));
};
购物车常量:
export const CART_ADD_ITEM = 'CART_ADD_ITEM';
推车减速机:
import {CART_ADD_ITEM } from '../constants/cartConstants';
export const cartReducer = (state = { cartItems: [] }, action) => {
switch (action.type) {
case CART_ADD_ITEM:
const item = action.payload;
const existItem = state.cartItems.find((x) => x.product === item.product);
if (existItem) {
return {
...state,
cartItems: state.cartItems.map((x) =>
x.product === existItem.product ? item : x
),
};
} else {
return { ...state, cartItems: [...state.cartItems, item] };
}
default:
return state;
}
};
店铺:
import { applyMiddleware, createStore, compose, combineReducers } from 'redux';
import thunk from 'redux-thunk';
import {cartReducer} from './reducers/cartReducers';
import {productDetailsReducer, productListReducer} from './reducers/productReducers';
const initialState = {
cart: {
cartItems: localStorage.getItem('cartItems')
? JSON.parse(localStorage.getItem('cartItems'))
: [],
},
};
const reducer = combineReducers({
productList: productListReducer,
productDetails: productDetailsReducer,
cart: cartReducer,
});
const composeEnhancer = (typeof window !=='undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__)|| compose;
const store = createStore(
reducer,
initialState,
composeEnhancer(applyMiddleware(thunk)));
export default store;
最后,我在 ReduxDevTools 中得到了这个结果:
当我尝试“AddToCart”时,ReduxDevTools 结果
谢谢你。
解决方案
推荐阅读
- svelte - 如何将 .js 文件添加到 Svelte REPL?
- node.js - VS 2019 社区中的 typescript 构建选项在哪里?
- .net-core - nuget 包无法在 VS 2019 中下载
- php - 按期分期付款 - PHP
- angular - Chrome 扩展内容脚本中的 Angular 元素
- reactjs - formik 表单中的 useFormik 是什么类型?
- ruby - Sinatra 根据请求安全地设置时区
- java - 如何找到在 Java 程序中创建的对象的数量?
- sql - 与贷款表的正确关系?
- php - 根据 WooCommerce 中的成本更改运输方式标签名称