Я новичок в vue, поэтому я, вероятно, совершаю ошибку новичка.
У меня есть корневой элемент vue - raptor.js:
const Component = {
el: '#app',
store,
data: {
productList: store.state.productlist
},
beforeCreate: function () {
return store.dispatch('getProductList', 'getTrendingBrands');
},
updated: function (){
console.log(111);
startSlider();
}
};
const vm = new Vue(Component);
Используя этот шаблон
<div class="grid-module-single popular-products" id="app">
<div class="row">
<div class="popular-items-slick col-xs-12">
<div v-for="product in productList">
...
</div>
</div>
</div>
My store is very simple store/index.js:
import Vue from 'vue';
import Vuex from 'vuex';
import model from '../../utilities/model';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
productlist: []
},
mutations: {
setProductList(state, data) {
state.productlist = data;
}
},
actions: {
getProductList({ commit }, action) {
return model.products().then(data => commit('setProductList', data));
}
}
});
В моем vuex devtool я вижу, что магазин обновляется https://www.screencast.com/t/UGbw7JyHS3
но мой компонент не обновляется: https://www.screencast.com/t/KhXQrePEd
Вопрос:
По инструментам разработчика я вижу, что мой код работает. Магазин пополняется данными. Однако мой компонент не обновляется. Я думал, что достаточно просто добавить это в свойство данных компонента:
data: {
productList: store.state.productlist
}
но очевидно, что объект данных не синхронизируется автоматически с хранилищем. Так что либо я где-то делаю полный vue no-no, либо мне нужно немного подправить код. В любом случае может кто-нибудь помочь мне в правильном направлении.
Большое спасибо.