【发布时间】:2021-07-26 15:54:02
【问题描述】:
我尝试使用 vue-cli vue create d-components 构建自己的实现 Vuetify 的组件库。我的组件是通过在我的 lib 的 main.ts 文件中导出的 install 函数注册的,例如:
import Vue, { VueConstructor } from 'vue';
import Vuetify from 'vuetify';
import DBtn from "./components/DBtn.vue";
Vue.use(Vuetify)
export default {
install(vue: VueConstructor): void {
vue.component("d-btn", DBtn);
...
}
}
而一个组件定义为:
<template>
<v-btn v-bind="$attrs" v-on="$listeners" elevation="0" small>
...
</v-btn>
</template>
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
@Component({})
export default class DBtn extends Vue {}
</script>
我将此库作为 git 子模块添加到我的主 Vue.js 应用程序(也使用 Vuetify)中,在子模块的根文件夹中运行 npm install 和 npm link,然后在我的主应用程序文件夹中运行 npm link d-components .
我的应用程序正在通过以下方式导入和调用我的库的安装函数:
import Vue from 'vue';
import DComponents from "d-components" // library's name
Vue.use(DComponents);
目前看来一切正常。
但是当我尝试使用我的库的组件时,我得到了一堆错误:
[Vue warn]: $attrs is readonly.
[Vue warn]: $listeners is readonly.
这似乎是因为在我的应用程序中创建了两个 Vue 实例,我搜索了我的所有 Vue 导入是否相同,我只能在我的主应用程序中找到 import Vue from 'vue' 和我的图书馆。
有谁知道如何检查我是否创建了多个 Vue 实例?
【问题讨论】:
标签: typescript vue.js vuetify.js npm-link