我可以在不使用我的应用程序也使用VueX的情况下使用使用VueX的组件吗?

时间:2019-04-12 02:08:48

标签: vue.js vuejs2 vue-component vuex arcgis-js-api

我想在我的Vue应用中使用此组件:https://commbocc.github.io/hcflgov-vue-esri-search/docs/

但是它会引发错误:TypeError: "t.$store is undefined"

我怀疑原因是我没有使用VueX,所以无法初始化组件正在寻找的VueX存储。

通常,如果我的应用程序不使用VueX,是否可以使用该组件?有办法解决吗?我认为整合VueX涉及的工作太过费力了。

2 个答案:

答案 0 :(得分:2)

可以。在大多数情况下,人们创建vue-plugins。这样做时,您可以像安装npm install myCoolPlugin一样安装它们,并通过导入import myCoolPlugin from 'myCoolPlugin'在应用中使用它们,然后根据插件的不同,可以像vuex一样全局安装它:

Vue.use(myCoolPlugin)

或者您可以根据需要直接在要使用它们的地方显式使用插件的组件,如下所示:

import {coolButton, coolInput} from 'myCoolPlugin';
export default {
    name: 'home-page',
    components: [coolButton, coolInput],
    ...
}

插件也有一个package.json文件,其中包含有关该插件所依赖的内容等的元数据(就像您的应用程序一样)。当您npm i myCoolPlugin时,npm会检查插件的package.json文件以查看插件所依赖的第三方软件包,然后继续将其安装在您的应用程序的node_modules中。

您的组件“ esri-search”存在的问题是未将其设置为软件包/插件。因此,它不会在您的应用程序中安装所需的任何依赖项(like vuex, lodash etc...)。

这就是为什么您必须安装vuex作为其对应用程序的依赖关系的原因,因为在复制时将此组件粘贴到您的应用程序中,它不是插件,它会成为您的应用程序。

这有意义吗? :)

答案 1 :(得分:0)

在这种情况下,我似乎可以解决该错误:

npm install --save vuex

main.js中:

import VueX from 'vuex';
Vue.use(VueX);

这并不能完全回答是否总是这样,因此可以寻求更好的答案。