vue视图不更新,要清空一下再设置才更新?

this.$children.map(item=>{
          if(item.list){
            let temp = clearCheckItem(item.list)
            // this.$store.commit('SET_MATCHLIST',[])
            this.$store.commit('SET_MATCHLIST',temp)
            // item.$set(item,'list',[])
            item.$set(item,'list',this.ffzmatchlist)
          }
        })

上方代码视图不更新,数据是更新了

this.$children.map(item=>{
          if(item.list){
            let temp = clearCheckItem(item.list)
            this.$store.commit('SET_MATCHLIST',[])
            this.$store.commit('SET_MATCHLIST',temp)
            item.$set(item,'list',[])
            item.$set(item,'list',this.ffzmatchlist)
          }
        })

为什么要清空一下再设置就有用了呢?
这样的用法对不对?
大家还有什么使用方法吗?

阅读 1.3k
1 个回答
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.min.js"></script>
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <div v-for="(item,index) in value1" :key="index">
        <div v-for="(inner,idx) in item.list" :key="idx">{{ inner }}</div>
      </div>
      <button @click="changeValue">点击我</button>
    </div>
    <script>
      new Vue({
        el: "#app",
        data() {
          return {
            value1: [
              {
                list: [1, 2, 3]
              },
              {
                list: [4, 5, 6]
              }
            ]
          };
        },
        methods: {
          changeValue() {
            this.value1.map(item => {
              this.$set(item, "list", [7, 8, 9]);
            });
          }
        }
      });
    </script>
  </body>
</html>

写了一个demo,你看看吧,是能修改随视图更新的。你应该哪里写错了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题