Vue 类组件:如何自定义选项

Posted

技术标签:

【中文标题】Vue 类组件:如何自定义选项【英文标题】:Vue Class Component: How to custom options 【发布时间】:2021-09-15 10:46:20 【问题描述】:

目前我使用 Vue 2 和 Typescript,但我无法向组件添加选项

<script lang="ts">
import  Component, Vue  from "vue-property-decorator";
import HelloWorld from "@/components/HelloWorld.vue"; // @ is an alias to /src

@Component<Home>(
  components: 
    HelloWorld,
  ,

  middleware: "yyy",
)
export default class Home extends Vue 
  mounted() 
    console.log(this.middleware);
  

</script>

我没有定义!

我发现了1个类似的问题,我试过了还是没有结果

Extend Component options

我的 src\shims-vue.d.ts

declare module "*.vue" 
  import Vue from "vue";
  export default Vue;

declare module "vue/types/vue" 
  interface Vue 
    middleware?: string;
  


declare module "vue/types/options" 
  interface ComponentOptions<V extends Vue> 
    middleware?: string;
  

【问题讨论】:

【参考方案1】:

您的类型声明缺少Vue 的导入:

// shims-vue.d.ts
import Vue from 'vue' ?

declare module "vue/types/options" 
  interface ComponentOptions<V extends Vue> 
    middleware?: string;
  

要从您的组件访问该选项,请使用this.$options.middleware(而不是this.middleware):

export default class Home extends Vue 
  mounted()            ?
    console.log(this.$options.middleware);
  

【讨论】:

以上是关于Vue 类组件:如何自定义选项的主要内容,如果未能解决你的问题,请参考以下文章

Vue——自定义组件 & 自定义事件$emit & 插槽slot

Nuxt 中的组件自定义选项与 Vue 3 组合 API

vue 自定义封装组件 使用 model 选项

Flutter自定义绘制组件

如何修复错误 [Vue 警告]:未知的自定义元素?

如何在vue.js中定位自定义元素(本机Web组件)?