Taro 頁面返回攜帶參數


用taro做小程序的項目中,也是經常用到從A頁面跳到B頁面,再從B頁面返回A頁面攜帶參數的業務邏輯,

就有很多種方法,本地存儲就是一種解決方案,

小程序官方有自帶的一種返回攜帶參數,但是這種方法在taro中並不能使用

我們在B頁面要返回之前要拿到上個頁面的信息

  let pages = Taro.getCurrentPages(); // 獲取當前的頁面棧 
  let prevPage = pages[pages.length - (num+1)]; //  獲取上一頁面

  然后從 prevPage 中設置setData 一個數據 最好是傳入一個對象,拿值的時候就方便的多

  prevPage.setData({num:1})

  然后再返回

    Taro.navigateBack({
      delta:num
    });

  接着返回到A頁面之后,我們要在 componentDidShow()中拿到數據

 let pages = Taro.getCurrentPages();
 let currPage = pages[pages.length - 1]; // 獲取當前頁面
console.log(currPage.data.num) //就是從B頁面傳過來的值

  完整代碼如下:

/** 
 * 返回時攜帶參數
 * 傳參的頁面:backWithParam(num,params)
 * 接受的頁面在 componentDidShow() 方法中接收,setState后需要手動刷新key
 * let pages = Taro.getCurrentPages();
 * let currPage = pages[pages.length - 1]; // 獲取當前頁面
 * this.setState({ 
 *   house_id: currPage.data.house_id, 
 * })
 */
export const backWithParam = function (num=1,data) { 
  let pages = Taro.getCurrentPages(); // 獲取當前的頁面棧 
  let prevPage = pages[pages.length - (num+1)]; //  獲取上一頁面
  prevPage.setData(data)
    Taro.navigateBack({
      delta:num
    });
}

  寫到工具類中,然后在B頁面引入執行后返回A頁面

 

 

 在A頁面中寫入

componentDidShow() {
    let pages = Taro.getCurrentPages();
    let currPage = pages[pages.length - 1]; // 獲取當前頁面
console.log(currPage.data.fillInfo)
if (currPage.data.fillInfo == '1'){
xxxxxxx //代碼邏輯 }
}

  最后打印的值就是從B頁面傳過來的值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM