Uni App 页面传参的几种方式

406 阅读1分钟
  • 通过URL进行传参,把要传递的信息拼接在URL后面
uni.navigateTo({ url:`/pages/goodsInfo/goodsInfo?id=${product.prdId}` })

url传参的优点是:取值方便可以跨域,缺点是:取值长度有限制,长度过大时会被截取掉

  • 使用本地缓存
    将数据存储在本地缓存中,可以在一个页面中使用另一个页面的存储的数据.
uni.setStorageSync("goodsData", item.products);

在对应页面中从本地缓存中取出该数据

uni.getStorageSync("goodsData");
  • 通过eventChannel向被打开页面传送数据
    1. 在调用 uni.navigateTo 或其他页面跳转方法时,确保在 success 回调中获取 eventChannel
    2. 使用 eventChannel 的 emit 方法来发送事件和数据。
    3. 在目标页面的 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: "这里是传递的数据" }
    });
},