uniapp中多个页面传递参数到一个页面内

15 篇文章 8 订阅

在这里插入图片描述
A页面传参到B页面的时候跳转的时候携带参数,在B页面中的onLoad(option){}接收即可。
A:

uni.navigateTo({url:'../pageB/pageB?id='+12})

B:

 onLoad(option) {
		let data=option.id
		console.log(data,'页面A传递的参数')
	},

B页面跳转到C页面,然后在C页面内要携带参数返回到B页面内的时候,

  • 如果在C页面内这样写:会发现B页面内以前根据ID渲染的数据没了。
uni.navigateTo({
		url:'../pageB/pageB?name='+'巴比伦'
	})

此时B页面onLoad(option)生命周期函数中,接收的数据只有C页面刚传递的name值了。


解决办法:

  • C页面跳转到B页面的时候,使用navigateBack(),此时B页面的接收的A页面的值还依然存在。
 uni.navigateBack({
		delta:1
	})
此时C页面向B页面要传递的参数可以这样传递:
  1. 可以使用全局事件监听方法(这个很好用)
    this.$emit用法
  • C页面:第一个参数是事件名,第二个是触发事件携带的附加参数
uni.$emit('selectName','巴比伦')
  • B页面:第一个参数是事件名,第二个是事件回调函数
onShow() {
			uni.$on('selectName',(res)=>{
				console.log(res,'从C页面传递的数据')
			})
		}
  • $on事件要在onShow()中写……在onLoad()中没反应
  1. 可以将C页面要传递的参数存储到vuex中,在B页面内访问即可。
this.$store.state.name='巴比伦'
  1. 使用本地存储的方式

vue项目使用router传参和route接收也是这种思想吧……

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Uniapp,我们可以通过以下方式传递多个参数: 1.使用query参数传递 在跳转到新页面时,可以在url添加多个参数,如下所示: ```javascript // 发送请求并传递多个参数 uni.navigateTo({ url: '/pages/myPage/myPage?name=小明&age=18&gender=男' }) // 接收参数 export default { onLoad(options) { console.log(options.name) // 小明 console.log(options.age) // 18 console.log(options.gender) // 男 } } ``` 我们可以通过options的方式获取传递过来的参数。 2.使用params参数传递 与query不同,params是在路由上定义的参数,通常在路由跳转时使用,如下所示: ```javascript // 定义路由参数 { path: '/myPage/:name/:age/:gender', component: () => import('@/pages/myPage/myPage.vue') } // 发送请求并传递多个参数 uni.navigateTo({ url: '/pages/myPage/小明/18/男' }) // 接收参数 export default { computed: { name() { return this.$route.params.name // 小明 }, age() { return this.$route.params.age // 18 }, gender() { return this.$route.params.gender // 男 } } } ``` 与query不同,params需要在路由上定义参数才能使用,并且使用this.$route.params来获取传递过来的参数。 以上就是在Uniapp传递多个参数的方法,开发者可以根据自身的需求选择使用哪种方法。 ### 回答2: 使用Vue.js的uni-app框架可以很方便地实现页面多个参数。通常我们会使用一个对象来存储多个参数。 首先,在需要传递参数页面,可以通过uni.navigateTo或uni.redirectTo方法跳转到下一个页面传递参数时需要将参数封装在一个对象,并将该对象作为query参数传递。 例如: ``` uni.navigateTo({ url: '/pages/detail/detail?id=' + id + '&name=' + name + '&age=' + age }) ``` 可以改为: ``` uni.navigateTo({ url: '/pages/detail/detail', query: { id: id, name: name, age: age } }) ``` 接收参数页面需要在onLoad生命周期函数通过this.$route.query获取传递的参数对象。 例如,假设我们在detail页面要获取id,name和age参数,代码如下: ``` onLoad() { this.id = this.$route.query.id; this.name = this.$route.query.name; this.age = this.$route.query.age; } ``` 最后,我们可以在页面使用this.id、this.name和this.age来获取对应的参数值。 总体来说,uni-app框架提供了非常方便的页面传参方式,使用对象进行参数封装,可以轻松传递多个参数,并且在接收参数页面,通过this.$route.query获取传递的参数对象,非常方便。 ### 回答3: 在开发uniapp应用时,经常需要将多个参数传递给另一个页面。这个过程可以通过以下步骤完成: 1. 定义传递参数的格式 在发送页面,需要定义传递参数的格式。最常见的格式是JSON格式,也可以使用类似URL参数的方式传递参数。无论哪种格式,都需要确定每个参数的名称和值。例如,{name: "张三", age: 18}就是一个JSON格式的参数。 2. 使用uni.navigateTo跳转到目标页面 用uni.navigateTo()方法打开目标页面,同时将参数传递给它。例如: ``` uni.navigateTo({ url: '/pages/detail/detail?name=' + name + '&age=' + age }) ``` 通过在URL添加参数的方式,将参数传递给目标页面。在此例参数名和值是name和age。 3. 目标页面接收参数并处理 在目标页面,可以通过以下代码获取传递的参数: ``` onLoad: function (options) { this.setData({ name: options.name, age: options.age }) } ``` 在onLoad钩子函数获取传递的参数值,同时将它们设置为data里的属性,供页面使用。 4. 在目标页面使用参数 在目标页面,已经将传递的参数保存在data,可以在模板使用。例如,如果希望显示传递的name和age,可以在wxml这样写: ``` <view>姓名:{{name}}</view> <view>年龄:{{age}}</view> ``` 以上就是传递多个参数的流程。需要注意的是,在发送页面和目标页面都需要定义相同的参数格式,以确保参数可以正确传递和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值