zoukankan      html  css  js  c++  java
  • Composition Api

    在Vue组件之间共享代码,Vue 2 使用mixin,vue3提供了更好的解决方案 - Composition API

    mixin代码重用

    将公共属性提取到一个单独的文件MyMixin.js:

    export default {
        data: () => ({
            mySharedDataProperty: null
        }),
        methods: {
            mySharedMethod () { ... }
        }
    }

    在组件中使用这个公共方法:

    import MyMixin from "./MyMixin.js"; // 引入公共方法的mixin文件
    
    export default {
        mixins: [MyMixin],
        data: () => ({
            myLocalDataProperty: null
        }),
        methods: {
            myLocalMethod () { ... }
        }
    }

    以上例子,在运行时使用的组件定义应该是这样的:

    export default {
        data: () => ({
        mySharedDataProperty: null
            myLocalDataProperty: null
        }),
        methods: {
            mySharedMethod () { ... },
            myLocalMethod () { ... }
        }
    }

    mixin最大的缺点:是我们不知道它给我们的组件增加了什么。它不仅难以解释,而且还可能导致与现有属性和函数的名称冲突。

    Composition Api用法

    在vue2中使用“options”API 构建组件,我们填充(options)属性,如data、methods、computed等将逻辑添加到Vue组件中。

    在vue3中可以使用Composition API, Vue核心团队将组件Composition API描述为“一套附加的、基于函数的api,允许灵活地组合组件逻辑”,Composition API将组件属性公开为函数。

    composition Api将逻辑都封装在了一个function里,我们可以很容易的将function迁移到外部文件,然后在使用到的组件里import进来,达到逻辑的抽离和复用。

    <template>
        <button @click="increment">
            count is: {{count}}, double is: {{double}}, click to increment
        </button>
    </template>
    <script>
        import {ref, computed, onMounted} from 'vue'
    
        export default{
            setup(){
                const count = ref(0)
                const double = computed(() => count.value * 2)
                function increment(){
                    count.value++
                }
                onMounted(() => console.log('mounted'))
                
                return{
                    count,
                    double,
                    increment
                }
            }
        }
    </script>

    导入我们需要的函数,在案例中,我们需要用ref创建响应式引用、计算属性使用computed、用onMounted访问装载后的生命周期钩子:

    import {ref, computed, onMounted} from 'vue'

    setup是一个函数,它将属性和函数返回到模板。我们在这个函数里声明所有的响应式属性、计算属性、观察者和生命周期钩子,然后返回它们,以便它们可以在模板中使用。我们没有在setup函数返回的内容将在模板中不可用:

    export default{
            setup(){

    用ref函数声明响应式属性count,它可以包装任何原始类型或对象,并返回它的响应式引用。传递元素的值将保留在创建引用的值属性中。例如,如果要访问count引用的值,则需要扩展请求count.value:

    const count = ref(0)

    声明计算属性double和increment函数,以及在mounted钩子内,当组件装载时,可以记录一些消息:

    const double = computed(() => count.value * 2)
    function increment(){
        count.value++
    }
    onMounted(() => console.log('mounted'))

    最后返回count和double属性与increment方法,使它们在模板中可用:

    return{
        count,
        double,
        increment
    }

    我们可以在template中访问setup返回的属性和函数,就像它们通过旧的options API声明的一样:

    <template>
        <button @click="increment">
            count is: {{count}}, double is: {{double}}, click to increment
        </button>
    </template>

    Composition API代码重用

    原文: https://baijiahao.baidu.com/s?id=1661851149274618678&wfr=spider&for=pc

  • 相关阅读:
    一个JAVA题引发的思考
    eclipse好玩的插件集(一) CKEditor插件
    Log4J使用实例---日志进行邮件发送或是存入数据库
    log4j输出到数据库(输出自定义参数、分级保存)
    String和StringBuffer的一点研究
    String、StringBuffer、StringBuilder区分和性能比较
    最新eclipse安装SVN插件
    jsoup select 选择器
    网页导出excel文件
    Dom4j完整教程
  • 原文地址:https://www.cnblogs.com/xjy20170907/p/12883862.html
Copyright © 2011-2022 走看看