zoukankan      html  css  js  c++  java
  • [Vue @Component] Extend Vue Components in TypeScript

    This lesson shows how you can extend and reuse logic in Vue components using TypeScript inheritance. It will take you through extending a component, its properties and methods, and how hooks are triggered along the inheritance tree.

    We can define a Parent.ts file, which only contains the logic without any template:

    import { Component, Vue } from 'vue-property-decorator';
    
    @Component
    export default class Parent extends Vue {
        created() {
            console.log("Parent is created")
        }
    
        click() {
            console.log("Parent is clicked")
        }
    
        parentClicked() {
            console.log("Parent is clicked")
        }
    }

    Then we can extends this Parent Class from a vue component:

    <template>
      <div class="hello">
        <h1>{{ msg }}</h1>
        <h2>{{ fullMessage }}</h2>
        <button @click="click">Click</button>
        <button @click="parentClicked">Parent Click</button>
      </div>
    </template>
    
    <script lang="ts">
    import { Component, Prop, Vue } from 'vue-property-decorator';
    import Parent from './Parent';
    
    @Component
    export default class HelloWorld extends Parent {
      @Prop() private msg!: string;
    
      // replace computed props
      get fullMessage() {
        return `${this.msg} should be fullmessage from a getter`
      }
    
      created() {
        console.log("Component is created")
      }
    
      click() {
        alert('Should replace what used to be defined in methods objects')
      }
    }
    </script>

    Once we extends from Parent, HelloWorld Component can inherit its Parent class's methods and props.

     For example:

    Will call parentClicked method from Parent Class from HelloWorld Component.

    <!-- HelloWorld.vue -->
    <button @click="parentClicked">Parent Click</button>

    If we don't define 'click' method in HelloWolrd component, it will using Parent's click() method.

  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9410784.html
Copyright © 2011-2022 走看看