React Native项目Redux Toolkit整合Reactotron遇类型错误求助
解决React Native + Redux Toolkit集成Reactotron的类型错误问题
问题核心
你遇到的Property 'createEnhancer' does not exist on type 'ReactotronReactNative'错误,是因为reactotron-redux插件给Reactotron实例注入的方法是storeEnhancer(),而非createEnhancer(),同时类型定义和环境判断逻辑也需要调整。
步骤1:修正Reactotron配置文件
先优化ReactotronConfig.js,仅在开发环境初始化Reactotron,避免生产环境冗余代码:
import Reactotron, { trackGlobalErrors, asyncStorage } from "reactotron-react-native"; import { reactotronRedux } from "reactotron-redux"; if (__DEV__) { Reactotron.configure({ name: "my-app" }) .use(asyncStorage()) .use(trackGlobalErrors()) .useReactNative({ storybook: true }) .use(reactotronRedux()) .connect(); // 挂载到全局,方便调试时直接调用console.tron.log() console.tron = Reactotron; } export default Reactotron;
步骤2:调整Store配置文件
修改store/index.tsx,替换错误的方法调用,并优化环境判断逻辑:
import { persistReducer, persistStore } from "redux-persist"; import AsyncStorage from "@react-native-async-storage/async-storage"; import { configureStore } from "@reduxjs/toolkit"; import rootReducer from "./reducers"; // 仅在开发环境加载Reactotron增强器 let reactotronEnhancer: any[] = []; if (__DEV__) { const Reactotron = require("../../ReactotronConfig").default; reactotronEnhancer = [Reactotron.storeEnhancer!()]; } const persistConfig = { key: "root", storage: AsyncStorage, }; const persistedReducer = persistReducer(persistConfig, rootReducer); export const store = configureStore({ reducer: persistedReducer, middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: false, }), enhancers: [...reactotronEnhancer], }); export const persistor = persistStore(store);
额外说明
- 类型断言处理:
!用来告诉TypeScriptstoreEnhancer方法确实存在,如果仍有类型报错,可以用(Reactotron as any).storeEnhancer()绕过类型检查,或者安装@types/reactotron-redux包获取官方类型定义。 - 依赖检查:确保已安装所有必要依赖:
reactotron-react-native、reactotron-redux、@reduxjs/toolkit、redux-persist。 - 调试准备:开发时需打开Reactotron客户端,确保设备/模拟器和电脑在同一网络下。
内容的提问来源于stack exchange,提问作者Asrin Utku
相关产品推荐
相关产品推荐

