首页 > 其他分享 >@react-navigation/native 在组件外使用路由跳转功能

@react-navigation/native 在组件外使用路由跳转功能

时间:2024-05-14 17:54:58浏览次数:21  
标签:navigate react export navigationRef 跳转 import navigation response

首先,创建一个 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;

标签:navigate,react,export,navigationRef,跳转,import,navigation,response
From: https://www.cnblogs.com/lpkshuai/p/18191833

相关文章

  • react什么时候用函数组件,什么时候用类组件
    在React中,使用函数组件还是类组件取决于你的需求和个人偏好。在过去,类组件是主要的React组件形式,但是随着ReactHooks的引入,函数组件也变得非常强大,两者之间的差异已经减小。以下是一些指导原则:简单的UI组件:对于简单的UI组件,如按钮、图标、展示静态内容的组件等,使用......
  • 实现Python日志点击跳转到代码位置的方法
    前言在软件开发过程中,日志是一种非常重要的工具,用于记录程序运行时的状态、错误信息以及调试信息。当程序出现问题时,定位到具体的代码位置对于排查问题至关重要。本文将介绍如何在Python日志中实现点击跳转到代码位置的功能,以提高调试效率。为什么需要点击跳转功能?通常情况下,......
  • react受控组件和非受控组件的区别
    在React中,组件可以分为受控组件和非受控组件,它们之间的主要区别在于组件内部对数据的控制方式。受控组件:受控组件的值受React组件的状态(state)控制。组件的值由React组件的state属性管理,并通过props将其传递给组件。当用户与组件交互时,例如输入表单元素的值发生变......
  • Springboot+React实现Minio文件分片上传、断点续传
    前言本文采用前后端结合,后端给前端每个分片的上传临时凭证,前端请求临时url,通过后端间接的去上传分片。其实无关乎vue或者react,思路都是一样的,逻辑也全都是js写的,跟模板语法或者jsx也没关系,仅仅是赋值不一样而已。前端:React+TypeScript+Antd+axios+spark-md5+p-......
  • React基于RBAC的权限控制
    简单实现基于RBAC(Role-BasedAccessControl,基于角色的访问控制)的权限控制,可以通过定义角色和权限,然后将权限分配给不同的角色来实现。用户根据其角色获得相应的权限,进而访问特定的路由、页面组件或者操作。以下是在React应用中实现RBAC的一个简单示例。这个示例包括了路由保护......
  • react native 项目使用 Xcode 打包上架 App Store
    一、创建证书、标识符和描述文件等:1.前提条件可正常运行和打包的代码、Apple开发者账号点击注册Apple开发者账号注册完进入页面可以看到证书、标识符和描述文件创建入口2.创建AppID点击Identifiers旁边的加号选择AppIDs,点击Continue。选择App,点击Conti......
  • uniapp循环请求接口之后跳转
    if(this.model.caseWorkPartyModelList.length>0){letpromises=[];//用于存储所有异步操作的Promiseletthat=thisthis.model.caseWorkPartyModelList.forEach(async(item,index)=>{......
  • 推荐一款Windows兼容的开源操作系统-ReactOS
    ReactOS介绍ReactOS™isanOpenSourceefforttodevelopaqualityoperatingsystemthatiscompatiblewithapplicationsanddriverswrittenfortheMicrosoft®Windows™NTfamilyofoperatingsystems(NT4,2000,XP,2003,Vista,7).TheReactOSproject,al......
  • npm install 报错 ---》npm ERR! request to https://registry.npmjs.org/react faile
    1、npminstall报错E:\wsg\AWC_TEST\stage>npminstallreactreact-domnpmERR!codeCERT_NOT_YET_VALIDnpmERR!errnoCERT_NOT_YET_VALIDnpmERR!requesttohttps://registry.npmjs.org/reactfailed,reason:certificateisnotyetvalidnpmERR!Acomplete......
  • 不安全的URL跳转(Pikachu)
    原理URL跳转漏洞学习-FreeBuf网络安全行业门户修复1.若跳转的URL事先是可以确定的,包括url和参数的值,则可以在后台先配置好,url参数只需传对应url的索引即可,通过索引找到对应具体url再进行跳转;2.若跳转的URL事先不确定,但其输入是由后台生成的(不是用户通过参数传人),则可以先生成......