vue2,使用lodash的remove方法删除数组项后,视图不更新

发布于 2022-09-06 01:36:41 字数 1163 浏览 18 评论 0

点击按钮后,可以在vue-devtools中观察到,vue数据并未马上变化 ,但是点击vue-devtools的刷新按钮后,数据变化了,用console.table输出,也能看到数据由4条变为2条了。
但视图并不变化!!
请问原因?如何解决?

<tr v-for="(sku,index) in list">
    <td>{{sku.tit}}</td>
    <td>{{sku.price}}</td>
    <td>{{sku.count}}</td>
</tr>
<button @click="del">删除选定项</button>
...

var vm = new Vue({
  el: '#app',
  methods:{
    del:function(n){
        _.remove(this.list, function(sku) {
          return sku.count == 1;
        });
    }
  },
  data: {
    list:[
        {"tit":"1号对象", "price":10 , count:1},
        {"tit":"2号对象", "price":20 , count:2},
        {"tit":"3号对象", "price":30 , count:2},
        {"tit":"4号对象", "price":40 , count:1}
    ]
  }
});

图片描述

图片描述

视图始终不变化,就是这个样子:
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

君勿笑 2022-09-13 01:36:41

// 因为没有检测到数组更新。
Vue文档:数组更新检测

// 这里其实直接用filter即可。不需要用lodash
del:function(n){
    this.list = this.list.filter(sku) {
      return sku.count == 1;
    });
}
执笏见 2022-09-13 01:36:41

根据楼上的提示,我加了一句代码,它触发了视图更新,成功解决:
this.list.sort();

至于用不用lodash,本身并没有什么影响。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文