#laravel #vue.js #vuex
#laravel #vue.js #vuex
Вопрос:
Привет, я совсем новичок в laravel и vue. Я пытаюсь использовать vuex в первый раз, но не мог понять, почему.
Я установил vuex и импортировал его вapp.js вот так
import Vuex from 'vuex';
Vue.use(Vuex);
и я объявляю vue индивидуально в блейд-файлах, поэтому я пытаюсь сделать то же самое с vuex в блейд-файле
<script>
const store = new Vuex.Store({
state: {
village: ''
},
mutations: {
changeVillage (state,value) {
state.village = value;
}
}
});
var app = new Vue({
el: '#app',
store: store,
data: {
},
});
</script>
теперь проблема в том, что vuex не распознан и говорит, что он не определен.
я попытался объявить постоянное хранилище в app.js но на этот раз он говорит, что хранилище не определено
любая помощь будет оценена
Комментарии:
1. вы используете vuejs с laravel через CDN или mix?
2. через laravel mix
3. экземпляр vue должен быть помещен в main.js в папке view/assets/js
4. Извините, я не понимаю. Дело в том, что я не хочу объявлять vue на всех своих веб-страницах, поэтому я объявляю экземпляр vue только в блейд-файлах, где мне нужно. Если вы имеете в виду, что я должен создать экземпляр vue в app.js файл, тогда это немного сложно для меня, так как я должен изменить все свои файлы.
Ответ №1:
var app = new Vue({
el: '#app',
store: store,
data: {
},
methods: {
changeVillageMethod() {
var cval = 'somevalue';
this.$store.commit('changeVillage', cval)
},
},
computed: {
village() {
return this.$store.state.village;
},
},
});
Теперь у вас есть доступ к значению деревни и методу changeVillageMethod в части шаблона.
Я рекомендую прочитать документы Veux. https://vuex.vuejs.org /
Комментарии:
1. это нормально, и я понял эту часть, но проблема в том, что он не обращается к переменной хранилища.
2. ну, я полагаю, что вы неправильно регистрируете Vuex. а также, основываясь на ваших комментариях, я не думаю, что вам нужен Vuex в вашем приложении, пока вы используете Vue на одной странице. вы определенно можете делать все с помощью самого Vue.
Ответ №2:
повторите попытку в соответствии с инструкциями:
импортируйте Vuex в файл bootstrap.js:
import Vuex from 'vuex';
...
window.Vuex = Vuex;
Vue.use(Vuex);
затем внесите в файл следующие изменения app.js:
import store from './YOUR_FILE_WITH_DEFINITION_STORAGE_VARIABLE.js';
new Vue({
el: '#app',
store: new Vuex.Store(store)
});
и файл JS вашего хранилища:
let store = {
...
};
export default store;