javascript - Vue 事件类 v-for

标签 javascript vue.js

我有一个关于 v-for 的问题。为什么我必须返回 this.activeClass = {...this.activeClass} 才能更新组件?为什么组件在此行之后没有更新。

if (this.activeClass[index]) {
                this.activeClass[index] = false;
            } else {
                this.activeClass[index] = true;
            }

我想在单击 v-for 元素时将背景设置为红色

模板:

 <template>
        <div class="container">
            <div class="row mt-5">
                <div
                    v-for="(quote, i) in quotes"
                    :key="i"
                    @click="del(i)"
                    :class="{red: activeClass[i]}"
                    class="quote col-3"
                >
                    {{ quote }}
                </div>
            </div>
        </div>
    </template>

脚本:

<script>
export default {
    props: ["quotes"],
    data: function() {
        return {
            activeClass: {}
        };
    },
    methods: {
        del(index) {
            if (this.activeClass[index]) {
                this.activeClass[index] = false;
            } else {
                this.activeClass[index] = true;
            }
            this.activeClass = {...this.activeClass};
        }
    }
};
</script>

最佳答案

Vuejs 对深层对象不具有反应性。看https://v2.vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats

关于javascript - Vue 事件类 v-for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55847009/

相关文章:

vue.js - v槽:activator ="{ on }"的含义

javascript - 使用 GraphQL 查询组件时导出错误?

javascript - CSS3。 VueJS。动态过渡背景渐变

javascript - 未捕获的类型错误 : callback. 应用不是函数

vue.js - Vuetify 组件 v-form 未响应声明的 @submit 事件处理程序

vue.js - 为什么我的 vue.config.js 文件不工作?

javascript - css 试图调整 jQuery datepicker 的大小

JavaScript - 使用数组或链表更快地计算二叉树的高度

vue.js - VS Code with Vue.js 中 Chrome 的调试器设置

vue.js - 在 Vuex 中使用计算绑定(bind)时,清除表单的优雅方法是什么?