React Native使用Redux Toolkit时dispatch reducer报错不是函数如何解决
问题解决方法
错误根源
你在createSlice配置中写错了核心字段名:将表示多个reducer映射的配置字段reducers(复数)误写为单数形式的reducer。
Redux Toolkit的createSlice API仅会识别reducers字段下定义的方法,自动生成对应的Action Creator。你写为单数reducer后,RTK没有生成setOrigin、setDestination等方法,navSlice.actions为空对象,自然导出的setOrigin是undefined,调用时就会报「不是函数」的错误。
IDE能跳转定义是因为你手动写了导出解构的代码,IDE静态解析时可以匹配到你写的变量名,并不代表运行时该方法真实存在。
修改方案
修改navSlice的配置字段即可:
export const navSlice = createSlice({ name: "nav", initialState, // 这里把单数reducer改成复数reducers reducers: { setOrigin: (state, action) => { state.origin = action.payload; }, setDestination: (state, action) => { state.destination = action.payload; }, setTravelTimeInformation: (state, action) => { state.travelTimeInformation = action.payload; }, }, });
修改后重启项目即可正常调用。
内容的提问来源于stack exchange,提问作者Brown_MV
相关产品推荐
相关产品推荐

