如何在ABC三个页面之间连续传参?

unapp中写小程序需要ABC三个页面动态传值,现在已经从A页面传参name和src到了B页面,需要把以上两个原封不动传到C页面,但是不能添加事件,因为页面其他位置已经有了点击事件了,此处不能添加点击事件,只能原封不动传到C页面,请教该怎么写呢?谢谢

<image class="img" :src="src" mode=""></image>
            <view class="">
                {{name}}->
            </view>


可以使用小程序提供的页面栈来实现原封不动地传值到C页面,具体步骤如下:

  1. 在B页面的onLoad函数中获取A页面传递过来的参数,并将其存储到B页面的data中。

  2. 在B页面的onUnload函数中将参数存储到页面栈中,以便在C页面中获取。

  3. 在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.setStorageSyncuni.getStorageSync方法来存储和获取参数。

在A页面中,您可以使用以下代码将参数存储在本地存储中:

uni.setStorageSync('name', name);
uni.setStorageSync('src', src);

在B页面中,您可以使用以下代码获取参数:

const name = uni.getStorageSync('name');
const src = uni.getStorageSync('src');

然后,在B页面中,您可以再次使用uni.setStorageSyncuni.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>

请注意,本地存储只能存储字符串数据,因此,如果需要存储其他类型的数据,您需要将其序列化为字符串,并在获取数据后将其反序列化。