在商店Vue js中更新后视图没有更新

Posted

技术标签:

【中文标题】在商店Vue js中更新后视图没有更新【英文标题】:View doesn't get updated after updates in store 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);

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

它获取了新数据,但仍然没有更新视图 您有一个名为products2 的新计算函数是否有原因?只是为了记录吗?因为可以直接访问模板中映射的状态products<my-component :producst="products" /> 您可以用您的 html 更新问题吗?

以上是关于在商店Vue js中更新后视图没有更新的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 主视图引用的js(jquery)在分部视图中无效,如何解决?

vue项目在IE浏览器中发出请求后视图没有更新

Vue.js - 更新路由器视图

Vue JS视图层未更新

解决vue中对象属性改变视图不更新的问题

vue2.0的数据改变了,怎么视图没变化