V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ToPoGE
V2EX  ›  Vue.js

vue3 中如何使用 composition-api 进行代码高效复用

  •  1
     
  •   ToPoGE · 228 天前 · 1121 次点击
    这是一个创建于 228 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚接触 vue3 ,请教大佬们一个问题,

    之前 vue2 项目使用了大量 mixins 来复用代码( mixins 有点像面向对象继承的感觉,还能重写方法和变量),

    现在用了 vue3,composition-api 如何实现 mixins 的功能?

    mixins 里有 20 个通用变量和 10 几个通用方法,都是和业务有关的,

    请问在 vue3 如何通过 composition-api 来达到 mixins 那样高效的复用,

    我看了官网的例子,但在实际业务中不太方便使用,

    mixins 里是可以直接操作 props ,emits ,但是在 hook 中就得传参进去,而且通用变量得挨个解构导入,

    网上搜了一些,也没看到 hook 如果能代替 mixins 来实现高效复用

    Agdhfdjh
        1
    Agdhfdjh  
       228 天前
    mixins 是 vue react 放弃的复用方法,得换个思路去学 hook
    rzWack
        2
    rzWack  
       228 天前 via Android
    同,蹲一个大佬的解说。。
    ccyu220
        3
    ccyu220  
       228 天前
    在 `useHooks()` 中使用 `getCurrentInstance` 来避免重复传参
    ccyu220
        4
    ccyu220  
       228 天前   ❤️ 1
    ```ts
    import { getCurrentInstance } from 'vue';

    export function useDemo() {

    const instance = getCurrentInstance();
    const { props, emit } = instance;

    console.log(props);
    console.log(emit);
    }
    ```
    ToPoGE
        5
    ToPoGE  
    OP
       228 天前
    大佬,有办法获取到外部定义的响应式变量吗?
    就是类似选项 API 中的 data ,methods ,watch 之类的?
    ToPoGE
        6
    ToPoGE  
    OP
       228 天前
    @ccyu220
    大佬,有办法获取到外部定义的响应式变量吗?
    就是类似选项 API 中的 data ,methods ,watch 之类的?
    ccyu220
        7
    ccyu220  
       227 天前 via iPhone
    @ToPoGE 可以的,instance 配合 provide
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1997 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:33 · PVG 00:33 · LAX 09:33 · JFK 12:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.