微信小程序 - 页面传参

1、url参数拼接

页面A代码:

111

页面B代码:

onLoad: function (options) {
  this.setData({
    user_id:options.user_id
  })
}

当然也可以在js页面传值,比如使用wx.navigateTo、wx.redirectTo等,下面是与各个方法的对应关系:

微信小程序 - 页面传参_第1张图片

 注意:

1、wx.navigateTo:保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。(可带参)

2、wx.navigateBack :关闭当前页面,返回上一页面或多级页面(小程序中页面栈最多十层)。可通过 getCurrentPages 获取当前的页面栈。(没有url属性,不可带参)

3、wx.redirectTo:关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。(可带参)

4、wx.switchTab:跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面(不可带参)

5、wx.reLaunch:关闭所有页面,打开到应用内的某个页面(可带参)

2、利用getCurrentPages 获取上一级页面prevPage,然后直接setDdata()

    let pages = getCurrentPages()
    let len = pages.length
    let prevPage  = pages[len-2]

    if(!prevPage) {
        return false
    }
    prevPage.setData({ 
      id: this.data.id
    })
    wx.navigateBack({
      delta: 1  // 返回上一级页面。
    })

注意:

  • 不要尝试修改页面栈,会导致路由以及页面状态错误。
  • 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。
  • 小程序页面栈最多有十个,多了就不能使用wx.navigateTo跳转
  • 这里只能用wx.navigateBack返回pageA,如果使用wx.navigateTo返回pageA是没有传值的
  • 即pageA使用wx.navigateTo跳到pageB,pageB使用wx.navigateBack跳到pageA,而页面栈是一路出栈的直到返回pageA,这时页面栈就只有一个pageA

3、globalData全局对象

在 app.js 中定义全局变量

globalData: {
  userInfo: null,
  globalName:"lhs"
}

在其他页面可以取到全局变量

let app = getApp();    
console.log(app.globalData.globalName)

4、数据缓存

将页面A的数据本地缓存,然后在B页面的onLoad函数中使用。当A和B页面没有页面栈关系,或者层级太多的时候可以使用。

相关方法

(1)wx.setStorage(OBJECT)和wx.getStorage(OBJECT)(异步接口)

         wx.setStorageSync和wx.getStorageSync(同步)

(2).wx.clearStorage和wx.clearStorageSync(异步,同步清除缓存)

(3).wx.removeStorage(OBJECT)和wx.removeStorageSync(OBJECT)(异步,同步)

(4).wx.getStorageInfo(OBJECT)和wx.getStorageInfoSync(异步,同步)

你可能感兴趣的:(微信小程序 - 页面传参)