#vue.js #vuejs2 #vue-component #vuex #arcgis-js-api
#vue.js #vuejs2 #vue-компонент #vuex #arcgis-js-api
Вопрос:
Я хотел бы использовать этот компонент в своем приложении Vue: https://commbocc.github.io/hcflgov-vue-esri-search/docs /
Однако он выдает ошибку: TypeError: "t.$store is undefined"
Я подозреваю, что причина в том, что я не использую VueX, поэтому мне не удается инициализировать хранилище VueX, которое ищет компонент.
В общем, можно ли использовать компонент, который использует VueX, если мое приложение этого не делает? Есть ли какой-то способ обойти это? Я думаю, что усилия, связанные с включением VueX, были бы слишком высокими.
Ответ №1:
Да, вы можете. В большинстве случаев люди создают vue-плагины. При этом вы можете установить их как 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» заключается в том, что он не настроен как пакет / плагин. Поэтому он не будет устанавливать какие-либо необходимые ему зависимости (например, vuex, Lodash и т. Д.) В вашем приложении.
Вот почему вам пришлось установить vuex как зависимость от вашего приложения, потому что, когда вы копируете и вставляете этот компонент в свое приложение, он не является плагином, он становится вашим приложением.
Имеет ли это смысл? 🙂
Ответ №2:
Кажется, в этом случае я смог решить эту ошибку следующим образом:
npm install --save vuex
В main.js
:
import VueX from 'vuex';
Vue.use(VueX);
Это не дает полного ответа на вопрос, всегда ли это так, поэтому будьте открыты для лучших ответов.