鑫时代
鑫时代
  • 发布:2024-08-21 18:35
  • 更新:2024-08-22 10:52
  • 阅读:143

mixin的局部覆盖问题

分类:uni-app

vue3版本 TS + setup语法糖

main.ts中mixin了全局分享

import type { App } from 'vue';  

// #ifdef MP-WEIXIN  
import { globalOnShareAppMessage } from './mp-share';  
// #endif  

export const setupMixin = (app : App) => {  
    // #ifdef MP-WEIXIN  
    app.mixin(globalOnShareAppMessage);  
    // #endif  
}
const { VUE_APP_NAME } = process.env;  

export const globalOnShareAppMessage = {  
    onShareAppMessage(){  
        console.log("mixin的onShareAppMessage")  
        const share = {  
          title: VUE_APP_NAME,  
          path: '/pages/index',  
          imageUrl: '/static/logo.png'  
        };  

        return share;  
    }  
}

当局部的onShareAppMessage再次使用的时候 执行在mixin之前,如何让局部的方法覆盖mixin呢?

2024-08-21 18:35 负责人:无 分享
已邀请:
鑫时代

鑫时代 (作者)

局部代码

<script lang="ts" setup>  
    import {  
        onLoad  
        // #ifdef MP-WEIXIN  
        , onShareAppMessage  
        // #endif  
    } from '@dcloudio/uni-app';  

    // #ifdef MP-WEIXIN  
    onShareAppMessage(() => {  
        console.log("mySpu的onShareAppMessage");  
                .......其他代码  
    })  
    // #endif  
</script>
6***@qq.com

6***@qq.com

终于看到同样的问题了 问题是因为底层注册hook函数的时候,setup 函数中的onload调用 先于 mixin公用的注册。 目前只有先不用组合式了

6***@qq.com

6***@qq.com

这个属于vue3的底层实现,setup里边的生命周期会比mixin先执行,参考:

可以自己绕一下

<script lang="ts" setup>
import { onShareAppMessage, onReady } from "@dcloudio/uni-app";
onReady(() => {
onShareAppMessage(() => {
return {
title: "自定义分享标题",
path: "/pages/home/index",
};
});
})
</script>

6***@qq.com

6***@qq.com

https://github.com/vuejs/core/issues/5918

要回复问题请先登录注册

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容