taro微信小程序跳转另一个小程序(参数接收、销毁,清除缓存)

还有很多东西没整理,接着来~

场景:a小程序要去b小程序的一个表单页,且携带参数(跳过去时默认把信息带过去填到表单里)
进入表单页后,用户可以用a小程序带过去的信息提交表单(这是a进入b的唯一目的,就是携带参数使用b的表单页提交东西)
当然也可以不提交,离开当前页直接进入b的首页,从b的其他页也可以进入这个表单页,携带相应的参数,再进行提交(此时 属于用户在b里交互,跟a就没关系了)

a:

 toOtherProgram () {
    Taro.navigateToMiniProgram({
      appId: '',//b小程序的appID 两个小程序必须关联在同一个公众号下
      path: 'pages/Message/index',//跳转到b的页面
      extraData: {//想要传递的值
        spotId,
        spotName
      },
      envVersion: 'release',//跳转到b的正式版
      //envVersion: 'develop',//跳转到b的开发版
      //envVersion: 'trial',//跳转到b的体验版
      success: function(res) {
      },
      fail: function(res) {
      }
    })
  }

b:
小程序的app.jsx文件,接收只能在这个文件里取到!

constructor(props) {
    super(props);
    try {
      // 全局方法 删除a小程序带来的信息
      global.updateMsgParams = function() {
          global.msgParams = undefined
        }
    } catch (e) {
    }
  }
componentDidShow() {
    //写在这里可以保证每次数据都更新,在componentWillMount不行,因为只能执行一次,会导致再次进入时不更新参数值
    //console.log('其他小程序带进来的值', this.$router.params.referrerInfo.extraData)
    global.msgParams = this.$router.params.referrerInfo.extraData
  } 

上面的global.msgParams是我在app.jsx定义的一个全局变量
想要在其他page页面使用的话,直接取这个全局变量

b的表单页

componentWillMount() {
	//取到信息
    console.log(global.msgParams)
}

goBackOther() {
	//this.state.backHomeFlag 是判断它从哪进来的
    if(this.state.backHomeFlag) {
    //如果从别的小程序跳进来,点击返回按钮回到首页
      Taro.switchTab({
        url:'/pages/Main/index'
      })
    } else {
    //如果从自己小程序进来,返回上一页
      Taro.navigateBack({
        delta: 1
      });
    }
    //不管从哪进来,离开页面时都需要将本页面的global msg 删除,避免缓存
      global.updateMsgParams() //app.jsx 定义的全局方法
 }

语言表达能力不是很好,这么记录我自己是能看懂的,希望也能帮到其他遇到过类似问题的童鞋~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值