React Native组件中Redux函数fetchOverview调用报错求助
问题排查与解决方案
1. 先查组件导入方式
你同时导出了未连接Redux的原始组件(export const OverviewScreen)和连接Redux后的组件(export default connect(...))。如果在其他页面导入时用了:
import { OverviewScreen } from './OverviewScreen';
而非默认导入:
import OverviewScreen from './OverviewScreen';
组件拿到的就是没注入Redux props的原始版本,自然找不到fetchOverview和isFetching。
解决:要么所有地方都用默认导入,要么删掉命名导出(避免混淆)。
2. 确认Reducer注册路径
检查根reducer(combineReducers的地方),确认Overview这个key是否和mapStateToProps里的路径完全匹配(大小写敏感):
// 示例根reducer代码 import { combineReducers } from 'redux'; import overviewReducer from './overviewReducer'; const rootReducer = combineReducers({ // 这里的key必须是Overview,和state.Overview.isFetching对应 Overview: overviewReducer, });
如果写成小写的overview,state.Overview.isFetching就会返回undefined。
3. 验证Redux Thunk中间件配置
你的fetchOverview是异步action creator(返回async函数),必须确保Redux store配置了redux-thunk中间件,否则dispatch无法处理这个函数。检查store创建代码:
import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; import rootReducer from './reducers'; const store = createStore( rootReducer, applyMiddleware(thunk) // 必须添加这一行 );
注:这条是补充验证项,当前你props里没有fetchOverview的问题,大概率是前两点导致的。
4. 简化mapDispatchToProps写法(可选)
可以直接传入action creator数组,connect会自动绑定dispatch,避免手动写dispatch的可能错误:
// 替换原来的mapDispatchToProps export default connect(mapStateToProps, { fetchOverview })(OverviewScreen);
内容的提问来源于stack exchange,提问作者Muirik
相关产品推荐
相关产品推荐

