zoukankan      html  css  js  c++  java
  • Vue方法中修改数组某一项元素而不能响应式更新

    <template>
      <div>
        <ul>
          <li v-for="(item, i) in ms" :key="i">{{item}}</li>
        </ul>
        <button @click="change()">点击</button>
      </div>
    </template>
    
    <script>
    export default {
      data () {
        return {
          ms: [1, 2, 3]
        }
      },
      methods: {
        change () {
          this.ms[0] = 100
          console.log(this.ms)
        }
      },
      onLoad (params) {
        this.keyword = params.keyword
      }
    }
    </script>
    

      上面的代码想要实现点击按钮修改数组第一个元素的值。

      然而,实际运行后发现控制台打印的数据显示已经修改成功了,但是页面上的数据却没有更新(不是响应式的)。

      是什么原因导致的呢?我查了一下官方文档,文档中内容如下:

       

      文档中明确指出,vue不能检测上述数组的变动,同时文档中也指出了实现上述需求的方法:

      将 change() 函数中的代码 this.ms[0] = 100 改写为 this.set(this.ms, 0, 100)

      这样,修改数组中单个元素值的需求就实现了

  • 相关阅读:
    Permutation Sequence
    Anagrams
    Unique Binary Search Trees II
    Interleaving String
    Longest Substring Without Repeating Characters
    Sqrt(x)
    Maximum Product Subarray
    Jump Game II
    Container With Most Water
    C结构体的初始化和赋值
  • 原文地址:https://www.cnblogs.com/belongs-to-qinghua/p/11112613.html
Copyright © 2011-2022 走看看