多種詳細講解小程序頁面傳值

開發小程序,老是避免不了頁面和頁面之間數據共享,實現方法有不少種,今天就詳細講解下小程序頁面傳值,須要的朋友能夠參考下。小程序

1 使用wx.navigateTo()傳值數組

這種傳值方式有兩種,緩存

  • url後面拼接傳值:須要跳轉的應用內非 tabBar 的頁面的路徑 (代碼包路徑), 路徑後能夠帶參數。參數與路徑之間使用 ? 分隔,參數鍵與參數值用 = 相連,不一樣參數用 & 分隔;如 'path?key=value&key2=value2'微信

  • events頁面間通訊接口:用於監聽被打開頁面發送到當前頁面的數據。基礎庫 2.7.3 開始支持。

1.url後面拼接傳值app

wx.navigateTo({
  url: 'test?id=1',
})
test頁面接收數據

Page({
  onLoad: function(option){
    console.log(option.query)
  }
})

2.events頁面間通訊接口ide

wx.navigateTo({
  url: 'test',
  events: {},
  success: function (res) {
    res.eventChannel.emit('goTest', { data: {id:1,content:'hello word'} })
  }
})

test頁面接收數據函數

Page({
  onShow: function () {
    let that = this
    const eventChannel = that.getOpenerEventChannel()
    eventChannel.on('goTest', function (data) {
      console.log(data)
    })
  },
})

2 數據緩存this

利用微信提供的wx.setStorage()、wx.setStorageSync()、wx.getStorage()、wx.getStorageSync()等APIurl

當前頁傳數據,爲確保數據已經進入緩存,最好用同步code

wx.setStorageSync('data', {data:"數據"})

目標頁,在須要用的地方獲取

let data= wx.getStorageSync('data')

3 頁面棧傳值

getCurrentPages() 函數用於獲取當前頁面棧的實例,以數組形式按棧的順序給出,第一個元素爲首頁,最後一個元素爲當前頁面。

let pages = getCurrentPages();
console.log(pages)

查看log

多種詳細講解小程序頁面傳值

須要修改數據的頁面

currPage = pages[pages.length - 1]
currPage.setData({
  data:'hello word'
})

注意:

  • 不要嘗試修改頁面棧,會致使路由以及頁面狀態錯誤。

  • 不要在 App.onLaunch 的時候調用 getCurrentPages(),此時 page 尚未生成。

4 app.js保存全局屬性

app.js配置全局屬性

globalData: {
  userInfo: null
}

須要使用的頁面

const app = getApp()
let userInfo = app.globalData.userInfo

須要改變app.js的值

const app = getApp()
app.globalData.userInfo= "hello word"
相關文章
相關標籤/搜索