uniapp 微信小程序跳转到其他小程序,相互传参

//跳转到B小程序以及传参给B小程序
const goThirdPartyFaceVerify = () => {
    uni.navigateToMiniProgram({
        appId: '', //B小程序的appid
        path: `/page/index/index?name=张三`  ,//B小程序的页面地址
        // envVersion: 'trial', //B小程序的开发版本 正式版本注释即可。
        success(res) {
        },
        fail(res) {
           
        },
    });
};
//接受B小程序传参
const listenParty = () => {
      //这个函数是在小程序页面被遮挡再展开就会执行,例如打开B小程序=>B小程序关闭时候,或者预览图片的时候等等
        uni.onAppShow(async (res) => {
            let extraData = res.referrerInfo.extraData;
            if (extraData && extraData.verifyResult) {
                try {
                   //接收到参数时候去执行自己需要的方法
                } catch (error) {
                    console.error(error);
                } finally {
                    //取消监听
                    uni.offAppShow();
                }
            }
        });
   
};

本人遇到的一个大坑就是,onAppShow事件一直执行,一开始的思路是在uni.onAppShow里面添加一个flag,这样是不行的,无法避免再预览图片的时候onAppShow仍然执行,因此就需要在uni.onAppShow外面加一个flag

let isVerifying = ref(false);  //只有在跳转到B小程序的时候设置为true

//跳转到B小程序以及传参给B小程序
const goThirdPartyFaceVerify = () => {
    uni.navigateToMiniProgram({
        appId: '', //B小程序的appid
        path: `/page/index/index?name=张三`  ,//B小程序的页面地址
        // envVersion: 'trial', //B小程序的开发版本 正式版本注释即可。
        success(res) {
             isVerifying.value = true;
        },
        fail(res) {
           
        },
    });
};

const listenParty = () => {
    if (isVerifying.value) {
        //这个函数是在小程序页面被遮挡再展开就会执行,例如打开B小程序=>B小程序关闭时候,或者预览图片的时候等等
        uni.onAppShow(async (res) => {
            let extraData = res.referrerInfo.extraData;
            if (extraData && extraData.verifyResult) {
                try {
                   //接收到参数时候去执行自己需要的方法
                } catch (error) {
                    console.error(error);
                } finally {
                    isVerifying.value = false;
                    //取消监听
                    uni.offAppShow();
                }
            }
        });
    }
};

watch(
    () => isVerifying.value,
    () => listenParty(),
);

心得:有时候一直卡在那里不妨换一种思路,里面不行试试外面,东边不行试试西边,或者出去透透气,别一直杵在那里,或者上头,浪费大量的时间,要学会高效的理由时间.成为一名时间管理大师

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值