- 通过URL进行传参,把要传递的信息拼接在URL后面
uni.navigateTo({ url:`/pages/goodsInfo/goodsInfo?id=${product.prdId}` })
url传参的优点是:取值方便可以跨域,缺点是:取值长度有限制,长度过大时会被截取掉
- 使用本地缓存
将数据存储在本地缓存中,可以在一个页面中使用另一个页面的存储的数据.
uni.setStorageSync("goodsData", item.products);
在对应页面中从本地缓存中取出该数据
uni.getStorageSync("goodsData");
- 通过eventChannel向被打开页面传送数据
- 在调用
uni.navigateTo或其他页面跳转方法时,确保在success回调中获取eventChannel。 - 使用
eventChannel的emit方法来发送事件和数据。 - 在目标页面的
onLoad钩子中,通过this.getOpenerEventChannel()获取eventChannel,然后使用on方法来监听事件。
- 在调用
uni.navigateTo({
url: '/pages/subpackage/order/order-submit',
success: res => {
let eventChannel = res.eventChannel;
if (eventChannel && eventChannel.emit) {
// 使用 emit 方法发送数据
eventChannel.emit('orderGoodsInfo', {data: 'some data'});
} else {
// 如果 eventChannel 或 emit 方法不存在,输出错误信息
console.error('eventChannel or eventChannel.emit is not available.');
}
},
fail: () => {
console.error('Page navigation failed.');
}
});
onLoad(options) {
const eventChannel = this.$mp.page.getOpenerEventChannel();
eventChannel.on('orderGoodsInfo', function(data) {
console.log(data); // 输出:{ data: "这里是传递的数据" }
});
},