zoukankan      html  css  js  c++  java
  • Composition API

    介绍

    Composition API的主要思想是,我们将它们定义为从新的 setup 函数返回的JavaScript变量,而不是将组件的功能(例如state、method、computed等)定义为对象属性。

    案例对比

    下面是一个经典的vue2的计数器案例.

    //Counter.vue
    export default {
      data: () => ({
        count: 0
      }),
      methods: {
        increment() {
          this.count++;
        }
      },
      computed: {
        double () {
          return this.count * 2;
        }
      }
    }
     

     下面是使用Composition API定义的完全相同的组件

    // Counter.vue
    import { ref, computed } from "vue";
    
    export default {
      setup() {
        const count = ref(0);
        const double = computed(() => count * 2)
        function increment() {
          count.value++;
        }
        return {
          count,
          double,
          increment
        }
      }
    }

    ref:导入了ref函数,表示该函数允许我们定义一个响应式变量,其作用与data变量几乎相同。

    count.value:increment方法是一个普通的JavaScript函数,需要更改子属性count的value才能更改响应式变量,这是因为使用red创建的响应式变量必须是对象,以便在传递的时候保持一致。

    代码提取

    Composition API的第一个明显优点是提取逻辑很容易。使用Composition提取上面Counter.vue组件代码。

    //useCounter.js
    import { ref, computed } from "vue";
    
    export default function () {
      const count = ref(0);
      const double = computed(() => count * 2)
      function increment() {
        count.value++;
      }
      return {
        count,
        double,
        increment
      }
    }

    品牌vi设计公司http://www.maiqicn.com 办公资源网站大全https://www.wode007.com

    代码重用

    要在组件中使用该函数,我们只需将模块导入组件文件并调用它(注意导入是一个函数)。这将返回我们定义的变量,随后我们可以从 setup 函数中返回它们。

    // MyComponent.js
    import useCounter from "./useCounter.js";
    
    export default {
      setup() {
        const { count, double, increment } = useCounter();
        return {
          count,
          double,
          increment
        }
      }
    } 
     

    解决mixins命名冲突

    在vue2中,可能会有相同命名的变量或者函数,会导致冲突,使用composition代替后,就可以解决了。

    export default {
      setup () {
        const { somevar1, someMethod1 } = useCompFunction1();
        const { somevar2, someMethod2 } = useCompFunction2();
        return {
          someVar1,
          someMethod1,
          someVar2,
          someMethod2
        }
      }
    }
  • 相关阅读:
    Oracle存储过程 一个具体实例
    quartz定时格式配置以及JS验证
    day10_多进程、协程
    day10_锁、守护进程
    day10_单线程和多线程下载文件
    day10_多线程把六个网站写到文件里
    day10_主线程等待子线程的两种方式
    day10_修改父类的构造方法(不重要)和鸭子类型
    day10_hasattr和getattr、setattr、delattr和property的用法
    pycharm professional2019.1破解过程
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/13690921.html
Copyright © 2011-2022 走看看