v-bind 的意外行为:class 和 cookies (Vue js)
Unexpected behaviour of v-bind:class and cookies (Vue js)
我正在尝试在 Vue js 中编写一个文本,该文本会在单击时更改其颜色并将其状态保存在 cookie 中。它在第一次访问时效果很好(没有 cookie),颜色变化正常,但刷新后颜色总是变成绿色。我认为 cookie 有问题,所以我以不同的方式显示它的值 (true/false),它工作正常。只有颜色不行。
我用过那个 cookie 库 -> https://www.npmjs.com/package/vue-cookies
有问题的视频 -> https://streamable.com/ky2l1z
<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>
//CHECKS IF COOKIE EXISTS
var cookieCheck = $cookies.get('isDark');
if(cookieCheck === 'undefined'){
cookieCheck = false;
console.log('COOKIE DOESNT EXIST');
}else{
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>
尝试使用 JSON:
将字符串值解析为布尔值
var cookieCheck = $cookies.get('isDark');
if (cookieCheck === 'undefined') {
cookieCheck = false;
console.log('COOKIE DOESNT EXIST');
} else {
console.log("COOKIE EXISTS")
// if it exists parse the value
cookieCheck = JSON.parse(cookieCheck)
// Check its type
console.log(typeof cookieCheck)
// >> boolean
}
我正在尝试在 Vue js 中编写一个文本,该文本会在单击时更改其颜色并将其状态保存在 cookie 中。它在第一次访问时效果很好(没有 cookie),颜色变化正常,但刷新后颜色总是变成绿色。我认为 cookie 有问题,所以我以不同的方式显示它的值 (true/false),它工作正常。只有颜色不行。
我用过那个 cookie 库 -> https://www.npmjs.com/package/vue-cookies
有问题的视频 -> https://streamable.com/ky2l1z
<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>
//CHECKS IF COOKIE EXISTS
var cookieCheck = $cookies.get('isDark');
if(cookieCheck === 'undefined'){
cookieCheck = false;
console.log('COOKIE DOESNT EXIST');
}else{
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>
尝试使用 JSON:
将字符串值解析为布尔值var cookieCheck = $cookies.get('isDark');
if (cookieCheck === 'undefined') {
cookieCheck = false;
console.log('COOKIE DOESNT EXIST');
} else {
console.log("COOKIE EXISTS")
// if it exists parse the value
cookieCheck = JSON.parse(cookieCheck)
// Check its type
console.log(typeof cookieCheck)
// >> boolean
}