You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中v-bind:class与vue-cookies搭配使用的异常问题排查

问题根因

vue-cookies 存储的所有值都会自动转为字符串类型,你存入的布尔值true/false读取时会变成字符串'true'/'false'。JavaScript 中非空字符串的布尔判定结果都为true,所以v-bind:class='{cookieColor: color}'永远判定为真,绿色样式始终生效。

修复方案

读取cookie后将字符串值转换为布尔值即可,修改后的完整代码如下:

<body>
<div id="app">
    
    <h1 v-bind:class='{cookieColor: color}'>{{ color }}</h1>
    <h1 v-bind:class='{cookieColor: color}'>COLOR</h1>
    <button @click="setCookie">CHANGE COLOR</button>

</div>


<script>

    // 校验cookie是否存在
    var cookieCheck = $cookies.get('isDark');  

    if(cookieCheck === undefined){
        cookieCheck = false;
        console.log('COOKIE DOESNT EXIST');
    }else{
        // 新增:将cookie返回的字符串转为布尔值
        cookieCheck = cookieCheck === 'true';
        console.log("COOKIE EXISTS")
    }


    new Vue({

        el: '#app',
        data: {
            color: cookieCheck,
        },
        methods: {
            setCookie(){
                this.color = !this.color;
                $cookies.set('isDark', this.color);
                var cookieCheck = $cookies.get('isDark');
                console.log(this.color);
            }
        },
    })
</script>

<style>

    h1{
        color:black;
    }      

    .cookieColor{
        color: rgb(157, 207, 157);
    }

</style>

内容的提问来源于stack exchange,提问作者caiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:36:03