当前位置: 首页 > news >正文

uni-app 跳转页面传参

uni-app Vue2 和 Vue3 页面跳转传参方法

在 uni-app 中,无论是 Vue2 还是 Vue3,页面跳转传参的方式基本一致,主要通过 uni.navigateTouni.redirectTo 等 API 实现。以下是常见的方法:


URL 拼接传参

通过 url 拼接参数,目标页面通过 onLoad 生命周期钩子接收参数。

// 跳转页面并传参
uni.navigateTo({url: '/pages/detail/detail?id=123&name=test'
});

目标页面接收参数:

// 目标页面
export default {onLoad(options) {console.log(options.id); // 123console.log(options.name); // test}
}

Vue2 中使用 Vuex:

// store.js
export default new Vuex.Store({state: {pageParams: {}},mutations: {setPageParams(state, params) {state.pageParams = params;}}
});// 发送页面
this.$store.commit('setPageParams', { id: 123, name: 'test' });
uni.navigateTo({ url: '/pages/detail/detail' });// 目标页面
computed: {pageParams() {return this.$store.state.pageParams;}
}

通过事件通道传参(Vue3 推荐)

  • 方法1
    Vue3 中可以使用 uni.$emituni.$on 实现跨页面通信。

发送参数:

// 发送页面
uni.navigateTo({url: '/pages/detail/detail',success: () => {uni.$emit('updateData', { id: 123, name: 'test' });}
});

接收参数:

// 目标页面
export default {mounted() {uni.$on('updateData', (data) => {console.log(data.id); // 123console.log(data.name); // test});},beforeUnmount() {uni.$off('updateData');}
}
  • 方法2
// 发送方uni.navigateTo({url: '/pages/user/order/payment',// 页面跳转传参数(navigateTo 调用成功后)success: (res) => {res.eventChannel.emit('orderInfo', detail)},events: {// 监听b.vue返回的参数successful(data) {console.log(JSON.stringify(data, null, 2))},}});
// 接收方import {getCurrentInstance} from 'vue';const instance = getCurrentInstance();onLoad(() => {const eventChannel = instance.proxy.getOpenerEventChannel();eventChannel.on('orderInfo', (data) => {console.log('data', data)});});

通过本地缓存

对于需要持久化的数据,可以使用 uni.setStorageSyncuni.getStorageSync

发送参数:

uni.setStorageSync('pageParams', { id: 123, name: 'test' });
uni.navigateTo({ url: '/pages/detail/detail' });

接收参数:

// 目标页面
export default {onLoad() {const params = uni.getStorageSync('pageParams');console.log(params); // { id: 123, name: 'test' }}
}

使用 uni.$once 实现一次性传参

Vue3 中可以通过 uni.$once 实现一次性事件监听。

发送参数:

uni.navigateTo({url: '/pages/detail/detail',success: () => {uni.$emit('onceData', { id: 123, name: 'test' });}
});

接收参数:

// 目标页面
export default {mounted() {uni.$once('onceData', (data) => {console.log(data); // { id: 123, name: 'test' }});}
}

总结

  • 简单参数:使用 URL 拼接传参。
  • 复杂数据:Vue2 用 Vuex,Vue3 用 事件通道。
  • 临时数据:使用 uni.$emituni.$on
  • 持久化数据:使用本地缓存。
    根据具体需求选择合适的方式。
http://www.dtcms.com/a/285671.html

相关文章:

  • Docker --privileged 命令详解
  • Diffusion-VLA 中的 Reasoning Token 注入机制解析:语言推理如何控制扩散模型?
  • 2.3 前端-ts的接口以及自定义类型
  • k8s:手动创建PV,解决postgis数据库本地永久存储
  • 【unity实战】使用unity的Navigation+LineRenderer实现一个3D人物寻路提前指示预测移动轨迹的效果,并可以适配不同的地形
  • 搜索引擎优化全攻略:提升百度排名优化
  • 解决Flutter运行android提示Deprecated imperative apply of Flutter‘s Gradle plugins
  • 武汉江滩某码头变形及应力自动化监测
  • 麒麟操作系统unity适配
  • java前端基础--HTMLCSS、JavaScript、Vue、Ajax
  • Python网络爬虫实现selenium对百度识图二次开发以及批量保存Excel
  • unity实现梦日记式效果
  • CS课程项目设计3:支持AI人机对战的井字棋游戏
  • 「Java EE开发指南」如何用MyEclipse创建企业应用项目?(一)
  • UniApp -- 小程序自定义导航栏组件
  • 小程序常用api
  • 2025年算法备案发号规律总结与下半年发号预测
  • js中 new Set()实例的各个api使用
  • Http请求中的特殊字符
  • iOS加固工具有哪些?项目场景下的组合策略与实战指南
  • Axios泛型参数解析与使用指南
  • 谷歌地球与ArcGIS Pro查看三维地形
  • Linux操作系统之线程:分页式存储管理
  • VR平台应该具备哪些功能?怎样选择VR平台?
  • RecyclerView与ListView深度对比分析
  • 相机光学(五十)——Depth AF
  • Visual Studio编译WPF项目生成的文件介绍
  • 相机的内外参分别指什么
  • AI生成邮件发送脚本(带附件/HTML排版)与定时爬取网站→邮件通知(价格监控原型)
  • Maven学习总结(62)—— Maven 打包瘦身和提速解决方案