javascript - 未处理的运行时错误类型错误:传播不可迭代实例的无效尝试
问题描述
当我尝试添加到购物车时出现此错误。
Unhandled Runtime Error.
TypeError: Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
import { baseURL } from '../../api/config/config';
import axios from 'axios';
export const getCartItemsLocalStorage = createAsyncThunk(
"cartitems/getCartItems",
async (val, thunkAPI) => {
let cartItemFromLocalStoarge = await JSON.parse(localStorage.getItem("cart"));
return cartItemFromLocalStoarge;
}
)
export const CartSlice = createSlice({
name: 'cart',
initialState: {
products: [],
cart: [],
},
reducers: {
addToCart: (state, action) => {
let actionId = action.payload;
const item = state.products.find((prod) => prod.id === actionId)
// Check if item already exist in cart
const inCart = state.cart !== null ? state.cart.find((item) => item.id === actionId ? true : false) : null;
state.cart = inCart
? state.cart.map(item =>
item.id === actionId
? { ...item, quantity: item.quantity + 1 }
: item
)
: [...state.cart, {...item, quantity: 1 }]
localStorage.setItem("cart", JSON.stringify(state.cart))
},
});
}
export const { addToCart } = CartSlice.actions;
export default CartSlice.reducer;
解决方案
你试图传播state.cart
它null
推荐阅读
- python - 时间戳减法必须具有相同的时区或没有时区
- php - 剩余unix时间戳的持续时间
- double - 代号 2 位双数
- python - pydispatcher 是否在后台线程中运行处理程序函数?
- django - django-rest-framework,将外键字段作为 url 参数传递以进行查找
- wordpress - 如何在 wordpress 中为我的登录页面设置不同的导航栏
- linux - 提高进程可以打开的文件数超过 2^20
- jquery - jQuery加入或扩展到动态字典到相同的ID
- memory - 在 python 中打开数百万个 numpy.memmaps
- python - 如何在 python 中使用 selenium 查找元素