@react-navigation/native 在组件外使用路由跳转功能
首先,创建一个 NavigationService.js
文件来管理导航引用。
// NavigationService.js import { createNavigationContainerRef } from '@react-navigation/native'; export const navigationRef = createNavigationContainerRef(); export function navigate(name, params) { if (navigationRef.isReady()) { navigationRef.navigate(name, params); } } export function replace(name, params) { if (navigationRef.isReady()) { navigationRef.reset({ index: 0, routes: [{ name, params }], }); } }
然后在主导航容器组件中,使用 navigationRef。
// App.js import React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { navigationRef } from './NavigationService'; import { createStackNavigator } from '@react-navigation/stack'; import HomeScreen from './screens/HomeScreen'; import LoginScreen from './screens/LoginScreen'; const Stack = createStackNavigator(); export default function App() { return ( <NavigationContainer ref={navigationRef}> <Stack.Navigator> <Stack.Screen name="Home" component={HomeScreen} /> <Stack.Screen name="Login" component={LoginScreen} /> </Stack.Navigator> </NavigationContainer> ); }
在外部文件中引入并使用 navigate ,如请求封装文件:
// request.js import axios from 'axios'; import { navigate } from './NavigationService'; const instance = axios.create({ baseURL: 'https://api.example.com', timeout: 1000, }); instance.interceptors.response.use( response => response, error => { if (error.response && error.response.status === 40105) { navigate('Login'); } return Promise.reject(error); } ); export default instance;
标签:
React Native
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程