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)

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

  • 相关阅读:
    C/C++一些库函数的实现
    约瑟夫环问题(Josephus)
    union关键字及大小端模式
    指针数组和数组指针
    巧用位运算
    C/C++生成可执行文件过程
    C语言+Modbus+NXP整体规划
    bug和待完善
    python学习第二课
    python学习第一课
  • 原文地址:https://www.cnblogs.com/belongs-to-qinghua/p/11112613.html
Copyright © 2011-2022 走看看