export default { namespaced: true, // 模块的 state 数据,其中JSON.parse()方法用于将JSON字符串转换为JavaScript对象 state: () => ({ cart: JSON.parse(uni.getStorageSync('cart') || '[]'), }), mutations: { addToCart(state, goods) { const finResult = state.cart.find(x => x.id === goods.id) if (!finResult) { state.cart.push(goods) } else { finResult.count++ } this.commit('m_cart/saveToStorage') }, saveToStorage(state) { uni.setStorageSync('cart', JSON.stringify(state.cart)) }, //更新购物车中商品的勾选状态 updateGoodsState(state, item) { const findResult = state.cart.find(x => x.id === item.id) if (findResult) { findResult.state = item.state this.commit('m_cart/saveToStorage') } }, //更新商品的数量 updateGoodsCount(state, item) { const findResult = state.cart.find(x => x.id === item.id) if (findResult) { findResult.count = item.count this.commit('m_cart/saveToStorage') } }, // 根据 Id 从购物车中删除对应的商品信息 removeGoodsByid(state, ...goods) { // 调用数组的 filter 方法进行过滤 for (let k of goods[0]) { state.cart = state.cart.filter(x => x.id !== k) } // 持久化存储到本地 this.commit('m_cart/saveToStorage') }, //根据id删除对应的商品 removeGoodsById(state, id) { state.cart = state.cart.filter(x => x.id !== id) this.commit('m_cart/saveToStorage') }, //更新购物车商品 updateAllGoodsState(state, newState) { state.cart.forEach(x => x.state = newState) this.commit('m_cart/saveToStorage') } }, // 根据 Id 从购物车中删除对应的商品信息 removeGoodsById(state, ...goods) { // 调用数组的 filter 方法进行过滤 for (let k of goods[0]) { state.cart = state.cart.filter(x => x.id !== k) } // 持久化存储到本地 this.commit('m_cart/saveToStorage') }, // 模块的 getters 属性 getters: { //购物车中所以商品的总数量 total(state) { // let c = 0 // state.cart.forEach(x => c += x.count) // return c retu
时间: 2024-04-28 14:20:27 浏览: 91
使用JSON.parse将json字符串转换成json对象的时候会出错
rn state.cart.reduce((acc, cur) => acc + cur.count, 0) }, //购物车中所以商品的总价格 totalPrice(state) { // let p = 0 // state.cart.forEach(x => p += x.count * x.price) // return p return state.cart.reduce((acc, cur) => acc + cur.count * cur.price, 0) }, //获取购物车中所有选中的商品 selectedGoods(state) { return state.cart.filter(x => x.state === true) }, //获取购物车中所有未选中的商品 unselectedGoods(state) { return state.cart.filter(x => !x.state) } } }
这是一段基于 Vuex 的购物车模块的代码,实现了向购物车中添加商品、删除商品、更新商品数量和状态、获取购物车中商品总数量、总价格以及选中的商品和未选中的商品,你有什么想问的吗?
阅读全文