首页 > 其他分享 >uniapp路由与页面跳转详解:API调用与Navigator组件实战

uniapp路由与页面跳转详解:API调用与Navigator组件实战

时间:2024-11-14 20:43:57浏览次数:3  
标签:uniapp option API params 跳转 uni pages 页面

UniApp路由与页面跳转详解:API调用与Navigator组件实战

路由

uniapp页面路由为框架统一管理,开发者需要在page.json里面配置每个路由页面的路径及页面样式。

路由跳转

uniapp有两种页面路由跳转方式,调用API跳转和navigator组件跳转。

调用API跳转

navTo(){
	/* 跳转到非tabbar页面 */
	uni.navigateTo({
		url:"/pages/auth/login",// 目标页面,注意:页面要在 pages.json 的 pages 数组中配置了
		animationType: "slide-in-bottom", // 打开页面动画,仅App支持。当前 从下往上 打开
		 animationDuration: 300, // 窗口动画持续时间,单位为 ms, 默认300ms
	})
},

效果:
UniApp路由与页面跳转详解:API调用与Navigator组件实战
传递参数,对应页面结束获取参数,通过onloadoption获取:
传递:

methods: {
			navTo(){
				/* 跳转到非tabbar页面 */
				uni.navigateTo({
					url:"/pages/auth/login?id=1&name=wuyong",// 目标页面,注意:页面要在 pages.json 的 pages 数组中配置了
					animationType: "slide-in-bottom", // 打开页面动画,仅App支持。当前 从下往上 打开
					 animationDuration: 1000, // 窗口动画持续时间,单位为 ms, 默认300ms
				})
			},
		}

接收:

<template>
	<view>
		登录页面
	</view>
</template>

<script>
	export default {
		data() {
			return {}
		},
		onLoad(option) {
			//通过option接受其他页面带过来的参数
			console.log("id",option)
			console.log("name",option.name)
		},
		methods: {}
	}
</script>

<style>

</style>

效果:
UniApp路由与页面跳转详解:API调用与Navigator组件实战

传递对象

传参:

methods: {
navTo(){
		const params = {id: 1, name: 'wuyong'}
		uni.navigateTo({
		 url: '/pages/auth/login?params=' + JSON.stringify(params)
		})

	},
}

接收参数:

onLoad(option) {
 const params = JSON.parse( option.params )
 console.log(params.id, params.name)
},

效果:
UniApp路由与页面跳转详解:API调用与Navigator组件实战

url有长度限制,太长的字符串会传递失败,使用encodeURIComponent方式解决:

传参,通过encodeURIComponent进行编码:

navTo(){
	// 3. url有长度限制,太长的字符串会传递失败,使用encodeURIComponent方式解决:
	const params = {id: 1, name: 'wuyong', desc: 'xxxxxxxxxx'}
	uni.navigateTo({
	 url: '/pages/auth/login?params=' + encodeURIComponent(JSON.stringify(params))
	})
},

接收参数,通过decodeURIComponent解码:

// login.vue 页面接收参数
onLoad (option) {
 const params = JSON.parse(decodeURIComponent(option.params))
 console.log(params.id, params.name, params.desc)
},

效果:
uniapp路由与页面跳转
uni.redirectTo()重定向页面,关闭当前页面,跳转到应用内的某个页面,返回不到原页面。
注意:跳转到tabBar页面只能使用switchTab跳转。

methods: {
	toOrderPage(){
		const params = {id:1,name:'wuyong'}
		uni.redirectTo({
			url:'/pages/order/order?params='+JSON.stringify(params)
		})
	}
}

接收跳转过来携带的参数:

onLoad(option) {
	const params = JSON.parse(option.params)
	console.log(params.id,params.name)
},

效果:
UniApp路由与页面跳转详解:API调用与Navigator组件实战
uni.reLaunch(Obj):关闭所有页面,打开到应用内的某个页面,导航<后退按钮,无法后退,跳转到目的也,无后退按钮。
跳转:

methods: {
	toOrderPage(){
		const params = {id:1,name:'wuyong'}
		uni.reLaunch({
			url:'/pages/order/order?params='+JSON.stringify(params)
		})
	}
}

接收:

onLoad(option) {
	const params = JSON.parse(option.params)
	console.log(params.id,params.name)
},

效果:无后退按钮
UniApp路由与页面跳转详解:API调用与Navigator组件实战
uni.switchTab(Object) :跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

// index.vue 页面
 methods: {
	 // 跳转分类标签页
	 toCategoryPage() {
		 uni.switchTab({
			 url: '/pages/category/category'
		 })
	 }
 }

uni.navigateBack(Object) :关闭当前页面,返回上一页面或多级页面。

uni.navigateBack({
 delta: 1 // 返回的页面数, 1后退上一页面
 animationType: 'slide-out-bottom', // 后退动画
 animationDuration: 300
})

效果:
UniApp路由与页面跳转详解:API调用与Navigator组件实战

navigator 组件跳转

使用navigator 组件类似HTML中的<a>标签,但只能跳转到本地页面,目标页面必须在pages.json中注册
方式一

<navigator :url="'/pages/auth/login?params='+encodeURIComponent(JSON.stringify({id:1,name:'wuyong',desc: 'xxxxxxxxxx'}))">
	<button type="default">登录</button>
</navigator>

效果:
UniApp路由与页面跳转详解:API调用与Navigator组件实战
方式二、

<navigator url="/pages/order/order" open-type="redirect">
	<button type="default">订单</button>
</navigator>

效果:
UniApp路由与页面跳转详解:API调用与Navigator组件实战
方式三、

<navigator url="/pages/category/index" hover-class="red-hover" open-type="switchTab" hover-stay-time="1000">
	<view type="default">分类</view>
</navigator>

效果:
UniApp路由与页面跳转详解:API调用与Navigator组件实战
项目开发中常用跳转完结~

标签:uniapp,option,API,params,跳转,uni,pages,页面
From: https://blog.csdn.net/qq_42696432/article/details/143701100

相关文章

  • C++builder中的人工智能(27):如何将 GPT-3 API 集成到 C++ 中
    人工智能软件和硬件技术正在迅速发展。我们每天都能看到新的进步。其中一个巨大的飞跃是我们拥有更多基于自然语言处理(NLP)和深度学习(DL)机制的逻辑性更强的AI聊天应用。有许多AI工具可以用来开发由C、C++、Delphi、Python等编程语言驱动的AI。本文将解释如何在C++Builder中使用......
  • apisix~限流插件的使用
    参考:https://i4t.com/19399.htmlhttps://github.com/apache/apisix/issues/9193https://github.com/apache/apisix/issues/9830https://apisix.apache.org/docs/apisix/plugins/limit-conn/https://blog.frankel.ch/different-rate-limits-apisix/在ApacheAPISIX中,限流......
  • java API
     API(ApplicationProgrammingInterface)是指应用程序的编程接口。字符串类Java中定义了3个封装字符串的类,分别是String类、StringBuffer类、StringBuilder类,它们位于Java.lang包中,并提供了一系列操作字符串的方法,这些方法不需要导包就可以直接使用。1.1String的初始化......
  • 何为RESTful Web API?
    REST(RepresentationalState Transfer)是一种用于构建网络应用程序的架构风格,特别适用于WebAPI。RESTfulWebAPI是基于REST 原则设计的API,允许客户端与服务器之间进行交互。以下是 REST WebAPI的一些关键概念和特点:1.资源(Resources)在REST 中,所有的内容都被视为资......
  • 【FastAPI】解决下载文件预处理时间较长的问题:FastAPI 实现异步任务处理
    解决下载文件预处理时间较长的问题:FastAPI实现异步任务处理在开发Web应用时,我们经常会遇到需要对文件进行预处理的场景。例如,用户请求下载一个文件之前,需要进行压缩、转换或者数据处理等操作。然而,这些预处理任务往往会花费较长时间,如果我们在后端直接处理这些任务,会导......
  • uniApp分包
    subPackages里的pages的路径是root下的相对路径,不是全路径。微信小程序每个分包的大小是2M,总体积一共不能超过20M。百度小程序每个分包的大小是2M,总体积一共不能超过8M。支付宝小程序每个分包的大小是2M,总体积一共不能超过8M。QQ小程序每个分包的大小是2M,总体积一共不能超过......
  • 解决 uniapp打包app 使用uview的图片上传导致的 您的应用在运行时,未同步告知权限申请
    该问题主要原因是因为u-upload的组件在点击上传组件就直接触发了权限获取而华为的要求是点击拍摄提示获取相机权限并提示点击从相册选择获取存储权限并提示本文主要解决uview的u-upload导致的问题解决思路为修改u-upload组件在u-upload组件添加以下代码//自定义......
  • PyAEDT:Ansys Electronics Desktop API 简介
    在本文中,我将向您介绍PyAEDT,这是一个Python库,旨在增强您对AnsysElectronicsDesktop或AEDT的体验。PyAEDT通过直接与AEDTAPI交互来简化脚本编写,从而允许在Ansys的电磁、热和机械求解器套件之间无缝集成。通过利用PyAADT的强大功能,您可以将分析提升到一个新的水......
  • 百万前端之uniapp开发微信小程序快速上手
    uniapp,一端开发多端使用。在使用uniapp开发之前必须要先掌握vue的语法,因为uniapp是基于vue的语法进行开发的。下载好HBuilderX工具进行开发,事半功倍。开发工具:HBuilderX、微信开发者工具(预览小程序)开发环境:node.js 1.创建项目使用uni-ui多端兼容,开发更高效!2.基础配置......
  • Greenlight - API versioning
    APIversioningAPIswhichsupportreal-worldbusinessesandusersoftenneedtochangetheirfunctionality andendpointsovertime—sometimesinabackwards-incompatibleway.So,toavoid problemsandconfusionforclients,it’sagoodideatoalwaysimp......