当前位置: 首页 > article >正文

Vue中对数组变化监听

在实际开发中,经常要对数组进行操作,最为常见的方法就是直接对数组中的某个元素进行赋值,比如下面这样的:

<script>
    export default {
        data() {
            return {
                comments: [],
                isReply: [0, 0, 0, 0, 0]
            };
        },
        methods: {
            replyTo: function (index) {
                console.log(this.isReply);
                isReply[index] = 1
                console.log(this.isReply);
            }
        },
    };
</script>

但是虽然数组中的元素改变了,但是vue却不能监听到变化,同时引入watch来检测也是没有效果,如下所示

<script>
    export default {
        data() {
            return {
                comments: [],
                isReply: [0, 0, 0, 0, 0]
            };
        },
      watch: {
        isReply: {
          handler(val, oldval) {

          },
          deep: true
        }
      },
        methods: {
            replyTo: function (index) {
                console.log(this.isReply);
                isReply[index] = 1
                console.log(this.isReply);
            }
        },
    };
</script>

从上述例子,发现vue是不会响应数据变化而重新去渲染页面。在vue中仅需要通过修改赋值语句的方式,即可让vue响应数组数据的变化。具体操作如下:

// Vue.set
Vue.set(vm.items, indexOfItem, newValue)

// Array.prototype.splice
vm.items.splice(indexOfItem, 1, newValue)

具体案例如下

<script>
    import Comment from '../components/Comment'

    export default {
        data() {
            return {
                comments: [],
                isReply: [0, 0, 0, 0, 0]
            };
        },
        watch: {

        },
        components: {
            Comment
        },
        methods: {
            replyTo: function (index) {
				
				// 最后一个参数为我们需要改变的值
                this.isReply.splice(index, 1, 1);

                this.$set(this.isReply, index, 1);

            }
        },
    };
</script>

http://www.kler.cn/news/330220.html

相关文章:

  • python之with
  • Redis-常见数据类型(修改ing)
  • 《PMI-PBA认证与商业分析实战精析》第5章 需求启发与分析
  • Linux:深入理解冯诺依曼结构与操作系统
  • 企业数据挖掘工具选择指南:如何找到最适合的工具
  • 安卓AI虚拟女友项目开发之语音识别及语音合成功能开发
  • 系统架构设计师教程 第11章 11.1 信息物理系统技术概述 笔记
  • 【iOS】计算器的仿写
  • Llama3.2开源:Meta发布1B和3B端侧模型、11B和90B多模态模型
  • Java网络通信—TCP
  • mac怎么设置ip地址映射
  • docker kibana 连接es
  • 使用Python实现图形学的物理模拟算法
  • 数据结构编程实践20讲(Python版)—03栈
  • 【每天学个新注解】Day 13 Lombok注解简解(十二)—@Delegate
  • Flink从ck拉起任务脚本
  • Netty系列-7 Netty编解码器
  • CSP-J模拟赛一补题报告
  • SQL:函数以及约束
  • 【分布式微服务云原生】详解Redis的主从模式,主服务器挂了如何从多个从服务器选出新的主服务器