Vue.js 使用 "ref" 包裹 boolean 类型的值时,改变值后视图有时候会刷新,但有时候不会,这是因为 Vue 依赖检测系统是基于 JavaScript 的浅比较来检测数据变化的。当你使用 "ref" 包裹 boolean 类型的值时,Vue 无法检测到变化,因为你修改的是同一个内存地址中的值,而不是新建一个对象。
为了解决这个问题,可以在修改 boolean 类型的值时使用 "set" 方法,这样 Vue 依赖检测系统就能检测到数据变化了。
示例代码:
const flag = ref<boolean>(true)
const changeFlag = () => {
flag.value = !flag.value
console.log('flag :>> ', flag.value);
}
修改为
const flag = ref<boolean>(true)
const changeFlag = () => {
flag.value = !flag.value
flag.value = flag.value
console.log('flag :>> ', flag.value);
}
修改为
const flag = ref<boolean>(true)
const changeFlag = () => {
flag.value = !flag.value
flag.value = flag.value
console.log('flag :>> ', flag.value);
}
或者
const flag = ref<boolean>(true)
const changeFlag = () => {
flag.value = !flag.value
flag.set(flag.value)
console.log('flag :>> ', flag.value);
}