【问题标题】:TS2339: Property 'quantity' does not exist on type 'DefaultRootState'TS2339:“DefaultRootState”类型上不存在属性“数量”
【发布时间】:2022-01-03 15:53:46
【问题描述】:

我正在尝试用这个从我的 redux 文件中调用数量变量

const quantity = useSelector(state=>state.quantity)

但我收到此错误 TS2339:

我的 redux 文件是这些

import {createSlice} from "@reduxjs/toolkit"

const cartSlice = createSlice({
    name:"cart",
    initialState:{
        products: [],
        quantity:0,
        total:0,
    },
    reducers:{
        addProduct:(state,action)=>{
            state.quantity +=1;
            state.products.push(action.payload.product);
            state.total += action.payload.price;
        },
    }
});

export const{addProduct} = cartSlice.actions
export default cartSlice.reducer;

还有这个

import {configureStore} from "@reduxjs/toolkit"
import cartReducer from "./cartRedux"

export default configureStore({
    reducer:{
        cart:cartReducer,
    }
})

【问题讨论】:

  • 当你从useSelectorconsole.log(state) 显示什么?
  • 由于这个错误,应用程序甚至无法编译
  • 如果您将const quantity = useSelector(state=>state.quantity) 更改为const test = useSelector(state=>state),它会运行吗?
  • 是的,运行正常
  • 现在控制台 test 变量并分享它显示的内容

标签: reactjs react-redux


【解决方案1】:

在你的组件文件中添加这个(在你的组件上方,在导入之后或在存储文件中并导出它):

type RootState = ReturnType<typeof store.getState>;

然后像这样使用它:

const quantity = useSelector((state: RootState)=>state.quantity)

【讨论】:

    猜你喜欢
    • 2020-07-01
    • 2021-08-21
    • 2020-11-24
    • 2016-03-14
    • 2017-02-25
    • 2021-11-24
    • 2019-01-11
    • 2021-05-08
    • 2021-10-15
    相关资源
    最近更新 更多