gpt4 book ai didi

javascript - vuex store 不更新组件

转载 作者:可可西里 更新时间:2023-11-01 01:49:04 24 4
gpt4 key购买 nike

我是 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>

我的商店很简单 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 禁忌,要么我需要稍微调整一下代码。无论如何,任何人都可以在正确的方向上帮助我。

非常感谢。

最佳答案

更新

我自己想出来了。只需用计算方法替换组件数据部分:

数据:

data: {
productList: store.state.productlist
}

并将其替换为。

computed: {
productList () {
return store.state.productlist;
}
},

关于javascript - vuex store 不更新组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42192855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com