【问题标题】:Can I use a component that uses VueX without my app also using VueX?我可以使用使用 VueX 的组件,而我的应用程序也使用 VueX 吗?
【发布时间】:2026-01-29 11:45:01
【问题描述】:

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

但是它抛出一个错误:TypeError: "t.$store is undefined"

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

一般来说,如果我的应用程序没有使用 VueX,是否可以使用使用 VueX 的组件?有没有办法解决这个问题?我认为整合 VueX 所涉及的工作量太大了。

【问题讨论】:

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


    【解决方案1】:

    是的,你可以。在大多数情况下,人们创建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 文件以查看插件所依赖的 3rd 方包,然后继续将它们安装在您应用的 node_modules 中。

    您的组件“esri-search”的问题在于它没有设置为包/插件。因此,它不会在您的应用中安装它需要的任何依赖项 (like vuex, lodash etc...)。

    这就是为什么您必须将 vuex 作为应用程序的依赖项安装的原因,因为当您将此组件复制粘贴到您的应用程序中时,它不是插件,它成为您的应用程序。 p>

    这有意义吗? :)

    【讨论】:

      【解决方案2】:

      在这种情况下,我似乎能够像这样解决该错误:

      npm install --save vuex

      main.js:

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

      这并不能完全回答这种情况是否总是如此,因此请接受更好的答案。

      【讨论】: