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

Can I use a component that uses VueX without my app also using VueX?

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

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

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

一般来说,如果我的应用程序不使用 VueX,是否可以使用使用 VueX 的组件?有什么办法解决这个问题吗?我认为合并 VueX 的工作量太高了。

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

npm install --save vuex

main.js中:

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

这并没有完全回答这种情况是否总是如此,所以欢迎更好的答案。

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

您的组件 "esri-search" 的问题是它没有设置为 package/plugin。因此它不会在您的应用程序中安装它需要的任何依赖项 (like vuex, lodash etc...)。

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

这有意义吗? :)