当前位置: 首页 > 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.lryc.cn/news/592067.html

相关文章:

  • SpringCloud相关总结
  • 牛油果果实检测-目标检测数据集(真实环境下)
  • 基于SpringBoot 投票系统 【源码+LW+PPT+部署】
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 基于jieba实现词频统计
  • 在 React 中根据数值动态设置 SVG 线条粗细
  • Hadoop与云原生集成:弹性扩缩容与OSS存储分离架构深度解析
  • VSCode - VSCode 快速跳转标签页
  • 135. Java 泛型 - 无界通配符
  • Android CountDownTimer
  • Ubuntu系统下交叉编译Android的X265库
  • UVC for USBCamera in Android - 篇二
  • 股指期货的杠杆比例一般是多少?
  • 【软件系统架构】系列七:系统性能——路由器性能深入解析
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - jieba库分词简介及使用
  • 短视频矩阵系统哪家好?全面解析与推荐
  • 短视频矩阵系统:从源头到开发的全面解析
  • 【unity实战】使用unity的Navigation+LineRenderer实现一个3D人物寻路提前指示预测移动轨迹的效果,并可以适配不同的地形
  • Charles 中文版介绍与使用指南 强大抓包工具助力 API 调试与网络优化
  • 网络编程(modbus,3握4挥)
  • 新书推介 | 吉林大学出版教材《汽车智能辅助驾驶系统技术》,国产仿真工具链GCKontrol-GCAir教学应用
  • mybatisdemo(黑马)
  • S7-1200 Profinet 的诊断功能
  • 嵌入式教育的云端革命:零边界实验室如何重塑未来工程师
  • 硬核电子工程:从硅片到系统的全栈实战指南—— 融合电路理论、嵌入式开发与PCB设计的工程艺术
  • 第三章自定义检视面板_创建自定义编辑器类_检测与应用修改(本章进度(2/9))
  • Xilinx Zynq:一款适用于软件定义无线电的现代片上系统
  • 深度学习之----对抗生成网络-pytorch-CycleGAN-and-pix2pix
  • IP协议深入理解
  • RustDesk 自建中继服务器教程(Mac mini)
  • 蓝松抠图的几大优点.