zoukankan      html  css  js  c++  java
  • 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页面传过来的值

  • 相关阅读:
    poj2187 Beauty Contest 旋转卡壳
    2017/8/6 考试吐槽
    bzoj2618 凸多边形 半平面交
    cogs1600 奶牛冰壶 计算几何
    cogs896 圈奶牛 凸包
    cogs1743 忠诚 zkw
    BZOJ 3224 普通平衡树 平衡树的两种姿势:SBT,splay。01trie
    BZOJ 3196 二逼平衡树
    BZOJ 1901 Dynamic Rankings
    BZOJ 4325[NOIP2015]斗地主
  • 原文地址:https://www.cnblogs.com/BySee1423/p/14469789.html
Copyright © 2011-2022 走看看