【问题标题】:View doesn't get updated after updates in store Vue js在商店Vue js中更新后视图没有更新
【发布时间】:2019-08-29 10:27:43
【问题描述】:

我有 Store,我有 actionsmutations

我的操作 loadProducts 调用了突变 setProducts,我在其中设置了 state 中的值,它工作正常

const actions = {
  loadProducts({ commit }, accountId ) {
    Products.where( { accountId: accountId } ).all().then((products) => {
      commit("setProducts", {accountId: accountId, products: products.data})
    });
  },
}
const mutations = {
  setProducts(state, {accountId, products}) {
    Vue.set(state, 'products', products);
  }
}

然后在我的组件中,我使用 ma​​pGetterscomputed

获取数据
 computed: {
   ...mapGetters([
     'products'
   ]),
   products2() {
     console.log(this.products)
     return this.products;
   }}

一切正常,但随后我尝试更新数据,它也有效,我得到更新状态 - 在 Vuex 控制台中,我可以看到我的更新状态和新数据,但视图本身不会更新 - 所以我有重新加载页面,查看数据出现。 我也通过动作、突变和吸气剂来做到这一点,在突变中它看起来像这样:

replace() {
   Vue.set(state, key, val);
}

【问题讨论】:

    标签: javascript vue.js


    【解决方案1】:

    您是否应该使用mapState 而不是mapGetters 将状态products 直接映射到您的组件?您是否有一个名为 products 的 getter 可以做一些额外的工作?

    ...mapState([
      'products'
    ]),
    

    【讨论】:

    • 它获取了新数据,但仍然没有更新视图
    • 您有一个名为products2 的新计算函数是否有原因?只是为了记录吗?因为可以直接访问模板中映射的状态products<my-component :producst="products" />
    • 您可以用您的 html 更新问题吗?
    猜你喜欢
    • 2020-12-18
    • 2011-07-30
    • 2020-06-10
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 2016-12-21
    • 2021-05-09
    相关资源
    最近更新 更多