uniapp跨页面通讯几种方法记录

本文介绍了五种在Web开发中常见的数据缓存和传递方法,包括使用localStorage和SessionStorage、Vuex状态管理、路由参数传递、Vue实例间通信以及uni框架的$emit和$on事件系统。
摘要由CSDN通过智能技术生成

方法1:使用缓存机制,如localStorage、SessionStorage等(不推荐用于数据量多的场景)

//异步缓存
uni.setStorage({
	key: 'storage_key',
	data: 'hello',
	success: function () {
		console.log('success');
	}
});
uni.getStorage({
	key: 'storage_key',
	success: function (res) {
		console.log(res.data);
	}
});

//同步缓存  参数1:key值,参数2:数据值
uni.setStorageSync('storage_key', 'hello');
const value = uni.getStorageSync('storage_key');

方法2:利用vuex缓存机制

//store
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
const store = new Vuex.Store({
	state: {
		message:null
	},
	getters: {
		getMessage:state=>{return state.message;}
	},
	mutations: {
		setMessage(state,message){
			state.message = message
		}
	}
})
export default store

//页面中存储与获取
import { mapState, mapMutations, mapActions, mapGetters } from 'vuex';
this.$store.commit('setMessage', 'abc');//存储

//获取
computed: {
		...mapState(['message'])
		}
//获取后js中正常使用this.message即可

方法3:利用路由跳转携带关键参数

//发起跳转的页面
goToRemark() {
				uni.navigateTo({
					url: '/pages/remark/remark?remark=' + this.remark
				});
			},
//接收的页面
onLoad({remark}) {
			this.remark = remark
		}
//或者可写成
onLoad(option) {
			this.remark = option.remark
		}

方法4:通过vue实例信息传递(该方法不适用与向还未创建的页面实例传递参数,可配合方法3一块使用)

getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

//当前页面中
goToDetail(data) {
					let pages = getCurrentPages();
					let prevPage = pages[pages.length - 2]; // 上一页面实例
					prevPage.$vm.prevDateFun(data) // $vm获取对应页面的 Vue 实例并调用上一页定义的方法			
					uni.navigateBack();//返回上一页
				}
//上一页在对应方法中接收数据
prevDateFun(obj) {
				this.userInfo.name = obj.name;
				this.userInfo.phone = obj.phone;
				this.userInfo.address = obj.address;
			},

方法5:uni.emit 和uni.on

uni.$emit('update',{msg:'页面更新'})

uni.$on('update',function(data){
		console.log('监听到事件来自 update ,携带参数 msg 为:' + data.msg);
	})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值