• Vue: 组件扩展


    在 Vue 扩展一个组件,有几种方式:

    全局混入

    Vue.mixin({
    
    });
    

    全局混入,只能定义 Vue 组件生命周期的属性或方法, 定义其他属性或方法不生效,如:

    Vue.mixin({
        methods: {
    
        },
        created: function() {
    
        },
        updated: function() {
    
        }
    });
    

    如果组件本身自己定义了 add 方法,则会调用组件本身的 add 方法,而不会调用这个全局混入的 add 方法。

    如果混入生命周期的方法,如 updated, destory 等,组件本身的这些方法会执行, 然后再执行混入的这些方法。

    组件混入

    组件混入,是指把功能注入到指定的组件,可以先把通用功能提取出来,然后再注入到需要的组件上去:

    // mixin.js
    const mixin = {
        methods: {
            getSelectedData: function() {
                // 
            },
    
            deleteData: function() {
                //
            }
        }
    }
    
    // Vue Component
    import mixin from './mixin.js'
    export default {
        mixins: [ mixin ] // 指定混合的内容
    }
    

    全局混入和组件混入规则都是一样的。

    混入总结

    为什么要叫混入,而不叫扩展,是因为却实不是扩展了组件的对象,反而有点和 JavaScript 中对象的 原型链 一样, 当 Vue 框架在为某个事件调用指定的方法时,首先会检查组件本身是否有此方法,如果没有就检查组件混入信息,没有找到对应的方式再去全局混入信息中查找。 组件生命周期的方法,则混入的方法和组件本身的方法都会被调用。

    组件扩展

    Vue 框架为组件提供了另一种扩展, extends, 这种方式就是真的把两个对象的信息合并,组成新组件的内容:

    export default {
        extends: Button,
    
        methods: {
            // 重写相应的方法
        }
    }
    

    如果继承了对象,只需要重写对应的方法,则可以创建一个 js 文件,直接按上面的方式继承并重写相关的方法,如果需要修改界面,有两种方式:

    1. 创建一个 vue 文件,并编写相应的 template 标签, 这样整个组件的 UI 都会被替换。
    2. 创建 JS 文件,继承组件,然后在 created 事件里通过 js 代码来修改 UI。

    总结

    看起来不太那么面像对象

  • 相关阅读:
    spring整合Quartz
    Quartz基本使用
    hibernate框架基础描述
    POI技术实现对excel的导出
    CG-CTF CRYPTO部分wp
    CG-CTF web部分wp
    快速排序算法的c++实现
    tornado当用户输入的URL无效时转入设定的页面
    sicily 4699. 简单哈希
    unbutu下Io language的解释器安装
  • 原文地址:https://www.cnblogs.com/kuku/p/14789815.html
Copyright © 2020-2023  润新知