taro微信小程序跳转另一个小程序(参数接收、销毁,清除缓存)
发表时间:2020-9-28
发布人:葵宇科技
浏览次数:142
还有很多东西没整理,接着来~
场景: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 定义的全局方法
}
语言表达能力不是很好,这么记录我自己是能看懂的,希望也能帮到其他遇到过类似问题的童鞋~