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)

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

  • 相关阅读:
    Subsequence
    【模板】AC自动机(加强版)
    1563: hzwer的跳跳棋(hop)
    P2469 [SDOI2010]星际竞速
    P2746 [USACO5.3]校园网Network of Schools
    Blocks
    Training little cats
    Period
    UVA-3942 Remember the Word
    初学线段树(poj3264+poj2777)
  • 原文地址:https://www.cnblogs.com/belongs-to-qinghua/p/11112613.html
Copyright © 2011-2022 走看看