动作未调度,反应本机,状态良好

问题描述

我无法向减速器发送动作。 状态就好了。不知道我哪里出问题了。 对于其他用户减速器,调度工作正常。我的项目有嵌套的抽屉导航>选项卡导航>堆栈导航,当前页面是第三个堆栈屏幕。不知道这是问题还是什么。 Store.js

import { combineReducers,createStore } from '@reduxjs/toolkit';
import cartReducer from './cartSlice';
import userReducer from './userSlice';

const rootReducer = combineReducers({
    userReducer: userReducer,cartReducer: cartReducer,})

const configureStore = () => createStore(rootReducer)

export default configureStore

cartSlice.js

const initialState = {
    cart: [{ key: 1,data: { freq: 'Daily',duration: 30 } }]
}

const cartReducer = (state = initialState,action) => {
    switch (action.types) {
        case "ADD_TO_CART":
            console.log(action)
            return {
                ...state,cart: [...state.cart,{ key: 2,data: action.data }]
            }

        case "REMOVE_FROM_CART":
            const idx = state.cart.map((cartItem) => (
                cartItem.key === action.id
            ))

            const tempNewCart = [...state.cart]
            if (idx >= 0) {
                tempNewCart.splice(idx,1)
            }
            return { ...state,cart: tempNewCart }

        case "CLEAR_CART":
            return {
                ...state,cart: []
            }
        default:
            return state
    }
}

export default cartReducer

SubscriptionQuantity组件

const mapStatetoProps = (state) => {
    console.log(state)
    return {
        cart: state.cartReducer.cart
    }
}

const mapdispatchToProps = (dispatch) => {
    // console.log(dispatch)
    return {
        addtoCartStore: (freq,duration) => dispatch({
            type: 'ADD_TO_CART',data: {
                freq: freq,duration: duration
            }
        })
    }
}

export default connect(mapStatetoProps,mapdispatchToProps)(SubscriptionQuantity)

函数调用调度

const addtoCart = () => {
addtoCartStore('Alternate',30)
navigation.navigate("CartScreen")
}

解决方法

问题在于switch语句!!!! 它应该是switch(action.type)而不是action.types。这就是为什么它采用默认路由。更改了打字错误,现在可以正常使用了!!