vue3 用全局mixin进行绑定onShareAppMessage后,如果page里有其他组件的情况下,全局onShareAppMessage将会触发多次,造成page修改了mixin的参数,组件却没有修改,造成page自定义分享不生效

- 发布:2022-07-08 08:47
- 更新:2022-07-08 10:20
- 阅读:680
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: window11
HBuilderX类型: Alpha
HBuilderX版本号: 3.5.1
第三方开发者工具版本号: 1.06.2206090
基础库版本号: 2.24.2
项目创建方式: HBuilderX
示例代码:
操作步骤:
vue3 用全局mixin进行绑定onShareAppMessage后,如果page里有其他组件的情况下,全局onShareAppMessage将会触发多次,造成page修改了mixin的参数,组件却没有修改,造成page自定义分享不生效
vue3 用全局mixin进行绑定onShareAppMessage后,如果page里有其他组件的情况下,全局onShareAppMessage将会触发多次,造成page修改了mixin的参数,组件却没有修改,造成page自定义分享不生效
预期结果:
希望组件不要触发onShareAppMessage方法
希望组件不要触发onShareAppMessage方法
实际结果:
组件触发覆盖了页面级别的分享
组件触发覆盖了页面级别的分享

//mixin.js
export const shareMixin = {
onShareAppMessage() {
return this.shareParams
},
computed: {
shareParams() {
const page = getCurrentPages()[getCurrentPages().length - 1]
return page ? page.shareOptions : {}
},
currentPage: {
get() {
return getCurrentPages()[getCurrentPages().length - 1]
},
set(val) {
const page = getCurrentPages()[getCurrentPages().length - 1]
Object.keys(val).forEach(e => {
page.shareOptions[e] = val[e]
console.log(page.shareOptions)
})
}
},
},
created() {
const page = getCurrentPages()[getCurrentPages().length - 1]
if(page && !page.shareOptions) {
page.shareOptions = {
title: '全局分享',
path: '/pages/home/home'
}
}
}
}
// 页面或者组件中修改
<script>
// 把组件注释了就可以自定义了。。。。。。。。。。
export default {
created() {
// 修改传入对象形式,修改哪个参数传哪个参数,可传入多个
this.currentPage = {
title: '局部111分享'
}
},
}
</script>
2***@qq.com (作者)
马上,我写一个。。。。
2022-07-08 09:10
十二112
回复 2***@qq.com: ok
2022-07-08 09:10
2***@qq.com (作者)
回复 十二112: 我在下面传了一个demo。麻烦看看呢,使用全局分享的页面我就不想每个页面去引了,所以使用了minxin,但是页面有组件也是很正常的事情
2022-07-08 09:24
十二112
回复 2***@qq.com: 这个是因为组件也被混入了,导致后面的onShareAppMessage覆盖了前面的
2022-07-08 09:39
2***@qq.com (作者)
回复 十二112: 对,我也猜测是这样。想过每个页面去单独引入mixin,但是太麻烦了。有什么办法可以解决吗?既可以直接全局分享,也可以自定义分享。
2022-07-08 09:42
十二112
回复 2***@qq.com: 我先试试
2022-07-08 09:47
2***@qq.com (作者)
回复 十二112: 万分感谢
2022-07-08 09:49
十二112
回复 2***@qq.com: 修改一下混入文件,试试
2022-07-08 10:18