一:当前页修改
(1):首先获取页面栈实例
let pages = getCurrentPages();
(2):当前页页面实例
let nowPage = pages[pages.length - 1]; // 当前页的实例
let prevPage = pages[pages.length - 2];// 上级页面实例
(3):修改数据
prevPage.$vm.['上级页面中的参数'] = null; // 对上级页面参数赋值
(4):返回上级页面
// 返回上级页面的多级参数
uni.navigateBack({
delta: 1, //uni.navigateTo跳转的返回,默认1为返回上一级,也可返回多级页面
});
this.$Router.navigateBack(); // 返回上级页面
this.$router.go(-1); // 返回上级页面
二:返回上级页面修改(uni-$on)
(1):页面跳转之前通过uni-$on注册事件
uni.$on('两个页面约定的方法', (res) => {
console.log('res')
this.backPageFn(res); // 返回页面触发方法,可以修改页面参数
}) ;
并在跳转页面返回之前提交emit
uni.$emit('两个页面约定的方法', data);
就可以在页面返回后,触发backPageFn()方法里修改页面参数
三:通过全局状态管理(globalData)
在App.vue中可以通过globalData做全局状态管理,可以通过globalData做一个状态共享,在页面返回之前修改globalData中的值,在返回页面的onShow中再去获取一遍globalData中的数据。
四:通过vuex
vuex全局状态管理就不赘述了,一般这个用的最多,状态修改也能追踪到,也最简单。
注:还有很多比如:(本地缓存,服务器缓存,公共bus)等方法