unapp中写小程序需要ABC三个页面动态传值,现在已经从A页面传参name和src到了B页面,需要把以上两个原封不动传到C页面,但是不能添加事件,因为页面其他位置已经有了点击事件了,此处不能添加点击事件,只能原封不动传到C页面,请教该怎么写呢?谢谢
<image class="img" :src="src" mode=""></image>
<view class="">
{{name}}->
</view>
可以使用小程序提供的页面栈来实现原封不动地传值到C页面,具体步骤如下:
在B页面的onLoad函数中获取A页面传递过来的参数,并将其存储到B页面的data中。
在B页面的onUnload函数中将参数存储到页面栈中,以便在C页面中获取。
在C页面的onLoad函数中从页面栈中获取参数,并将其存储到C页面的data中。
下面是示例代码:
// B页面
Page({
onLoad: function(options) {
// 获取A页面传递过来的参数
const { name, src } = options;
// 存储参数到B页面的data中
this.setData({
name,
src
});
},
onUnload: function() {
// 将参数存储到页面栈中
const pages = getCurrentPages();
const prevPage = pages[pages.length - 2];
prevPage.setData({
name: this.data.name,
src: this.data.src
});
}
});
// C页面
Page({
onLoad: function() {
// 从页面栈中获取参数
const pages = getCurrentPages();
const prevPage = pages[pages.length - 2];
const { name, src } = prevPage.data;
// 存储参数到C页面的data中
this.setData({
name,
src
});
}
});
在C页面中,可以直接使用data中存储的name和src参数,例如:
<image class="img" :src="src" mode=""></image>
<view class="">{{name}}-></view>
如果您不能添加点击事件,并且需要将从A页面传递到B页面的参数原封不动地传递到C页面,您可以尝试使用uni.setStorageSync
和uni.getStorageSync
方法来存储和获取参数。
在A页面中,您可以使用以下代码将参数存储在本地存储中:
uni.setStorageSync('name', name);
uni.setStorageSync('src', src);
在B页面中,您可以使用以下代码获取参数:
const name = uni.getStorageSync('name');
const src = uni.getStorageSync('src');
然后,在B页面中,您可以再次使用uni.setStorageSync
和uni.getStorageSync
方法将参数存储并在C页面中获取它们:
// 在B页面中
uni.setStorageSync('name', name);
uni.setStorageSync('src', src);
// 在C页面中
const name = uni.getStorageSync('name');
const src = uni.getStorageSync('src');
然后,您可以在C页面中使用以下代码来显示这些参数:
<image class="img" :src="src" mode=""></image>
<view class="">{{name}}-></view>
请注意,本地存储只能存储字符串数据,因此,如果需要存储其他类型的数据,您需要将其序列化为字符串,并在获取数据后将其反序列化。