uniapp路由怎么实现带参数的跳转
uniapp路由概述
在了解uniapp如何实现带参数的路由跳转之前,我们需要先了解uniapp中的路由机制。
uniapp的路由机制类似于前端框架Vue的路由机制。在uniapp中,可以使用uni.navigateTo、uni.redirectTo、uni.switchTab、uni.reLaunch这四个API进行路由跳转。
其中,uni.navigateTo和uni.redirectTo是两个比较常用的API,它们可以用来进行非tabbar页面的跳转。uni.navigateTo是正常的跳转方式,而uni.redirectTo是在跳转完成后,将之前的页面从栈中弹出,保证当前页面为栈顶。
举个例子,如下所示:
// 跳转到test页面
uni.navigateTo({
url: '/pages/test/test'
})
// 跳转到test页面并关闭中间页面
uni.redirectTo({
url: '/pages/test/test'
})
uniapp路由带参数跳转
在一些实际的开发场景中,我们需要向某个页面传递参数。在uniapp中,可以通过在路由路径后面加上查询参数的方式来传递参数,示例如下:
uni.navigateTo({
url: '/pages/test/test?id=1&name=uniapp'
})
上述代码中,我们在路由路径后面使用了查询参数的方式,将id设为1,将name设为uniapp。在被跳转的页面中,我们可以通过uni.getStorageSync(‘id’)、uni.getStorageSync(‘name’)等方法获取传递的参数信息。
然而,当要传递的参数较多时,使用查询参数的方式就比较麻烦。此时,我们可以使用uniapp路由的另一种方式——传递对象参数。
传递对象参数的方式与传递查询参数类似,只是需要将参数封装到一个对象中。如下所示:
// 在主页中定义需要传递的对象参数
let params = {id:1,name:"uniapp"}
// 点击按钮,跳转到test页面,并将参数传递过去
uni.navigateTo({
url:'/pages/test/test?id='+JSON.stringify(params)
})
注意,在这里我们需要将参数对象转换为字符串,在跳转时记住解析这个字符串。可以在跳转后,通过字符串转换为JSON对象,再对其进行操作。
// test页面,获取对象参数
onLoad:function(options){
let params=JSON.parse(options.id);
console.log(params)
}
uniapp路由传递数值和数组参数
除了传递对象参数之外,uniapp路由还支持传递数值和数组参数。
如果想传递一个单一的数值,也可以使用路由路径后面加查询参数的方式来实现。
比如:
uni.navigateTo({
url: '/pages/test/test?id=1'
})
然后,在test页面中,我们可以通过uni.getStorageSync(‘id’)方法来获取这个数值。
如果想传递一个数组参数,可以按照传递对象参数的方式,将该数组与其他参数封装到一个对象中。如下所示:
// 在主页中定义需要传递的对象参数
let arr = [1,2,3]
// 点击按钮,跳转到test页面,并将参数传递过去
uni.navigateTo({
url:'/pages/test/test?id='+JSON.stringify({arr:arr})
})
在test页面中,我们可以通过JSON.parse(options.id).arr来获取这个数组参数。
总结
通过本文我们简要了解了uniapp实现带参数跳转的方法。我们可以通过路由路径后面加查询参数、传递对象参数、传递数值参数、传递数组参数等方式来实现参数传递,以满足不同开发场景的需求。