Redux Toolkit+TypeScript报错:Property 'push'不存在于WritableDraft<CartState>
解决Redux Toolkit + TypeScript中
push不存在的类型错误 你报错的核心原因是state的类型是WritableDraft<CartState>——也就是你定义的包含products数组的对象,而非数组本身,因此无法直接对state调用push方法。
修复方案很简单:你需要操作的是state下的products数组属性,而非state对象本身。修改后的完整代码如下:
import { createSlice, PayloadAction } from '@reduxjs/toolkit' import { Product } from '../pages/Product/Types' export interface CartState { products: Product[] } const initialState: CartState = { products: [] } export const cartSlice = createSlice({ name: 'cart', initialState, reducers: { addToCart: (state, action: PayloadAction<Product>) => { // 改为操作state.products数组 state.products.push(action.payload) } } }) export const { addToCart } = cartSlice.actions export default cartSlice.reducer
Redux Toolkit内置的Immer会自动将这种“可变”的数组操作(比如push)转换为符合Redux要求的不可变更新,完全符合规范。
内容的提问来源于stack exchange,提问作者mattBurnett
相关产品推荐
相关产品推荐

