/** * H5:Taro Vite 偶发把 @tarojs/plugin-framework-react/dist/runtime 打成两份, * 导致 createReactApp 初始化了 B 份 reactMeta,而 Taro.useDidShow 仍绑定 A 份(R={}), * 页面一进就报 n.useContext is not a function。 * * 在 App 渲染前,用与 createReactApp 同一份 runtime 的 hooks 覆盖到 Taro 上。 */ import Taro from '@tarojs/taro'; import { useAddToFavorites, useDidHide, useDidShow, useError, useKeyboardHeight, useLaunch, useLoad, useOptionMenuClick, usePageNotFound, usePageScroll, usePullDownRefresh, usePullIntercept, useReachBottom, useReady, useResize, useRouter, useSaveExitState, useScope, useShareAppMessage, useShareTimeline, useTabItemTap, useTitleClick, useUnhandledRejection, useUnload, } from '@tarojs/plugin-framework-react/dist/runtime'; const HOOKS = { useAddToFavorites, useDidHide, useDidShow, useError, useKeyboardHeight, useLaunch, useLoad, useOptionMenuClick, usePageNotFound, usePageScroll, usePullDownRefresh, usePullIntercept, useReachBottom, useReady, useResize, useRouter, useSaveExitState, useScope, useShareAppMessage, useShareTimeline, useTabItemTap, useTitleClick, useUnhandledRejection, useUnload, } as const; export function patchTaroH5Hooks() { if (process.env.TARO_ENV !== 'h5') return; const target = Taro as unknown as Record; for (const [key, fn] of Object.entries(HOOKS)) { target[key] = fn; } }