Vue中对数组变化监听

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

javascript 复制代码
<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来检测也是没有效果,如下所示

javascript 复制代码
<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>
相关推荐
kk不中嘞3 分钟前
浅谈前端框架
前端·vue.js·react.js·前端框架
服务端技术栈17 分钟前
历时 1 个多月,我的第一个微信小程序「图片转 Excel」终于上线了!
前端·后端·微信小程序
一个很老的小萌新19 分钟前
json 解析 [{“id“:1,“name“:“apple“},{“id“:2,“name“:“banana“}]
java·前端·json
yanlele35 分钟前
前端面试第 78 期 - 2025.09.07 更新 Nginx 专题面试总结(12 道题)
前端·javascript·面试
影子信息1 小时前
el-tree 点击父节点无效,只能选中子节点
前端·javascript·vue.js
拜无忧1 小时前
完美圆角,渐变边框,兼容chrome 60,两层背景的视觉差
前端·css
徐小夕1 小时前
用Vue3写了一款协同文档编辑器,效果简直牛!
前端·javascript·vue.js
wangbing11251 小时前
界面规范8-文字
前端·javascript·html
盛夏绽放1 小时前
抽成独立组件库:微前端架构下公共组件共享的最佳实践
前端·有问必答
江拥羡橙1 小时前
【目录-单选】鸿蒙HarmonyOS开发者基础
前端·ui·华为·typescript·harmonyos