Vue.js3 Toggle v-show on checkbox/toggle click,如何使 v-show 在每次点击时反应
Vue.js3 Toggle v-show on checkbox/toggle click, how to make v-show reactive on each click
<template>
<ToggleSwitch class="right " @onChange.preventDefault="onChange" ></ToggleSwitch>
<div v-show="!hidden">
<CheckBox v-if="typeof cellProps.rowData.BrandTypeId === 'boolean'"
class="right space" />
<Input v-if="typeof cellProps.rowData.BrandTypeId != 'boolean'"
class="right space"
label="Change Colors" />
</div>
</template>
<script lang="ts" setup>
let hidden = true
const onChange = () => {
console.log("toggle successful", hidden)
hidden = !hidden;
}
</script>
隐藏值在渲染时起作用,不显示 div 中的复选框和输入。单击“隐藏”值确实会发生变化,但 v-show 不会发生变化。
这怎么设置不正确?
您可以使用 ref
使您的变量具有反应性:
import { ref } from "vue'
let hidden = ref(true)
const onChange = () => {
console.log("toggle successful", hidden)
hidden.value = !hidden.value;
}
<template>
<ToggleSwitch class="right " @onChange.preventDefault="onChange" ></ToggleSwitch>
<div v-show="!hidden">
<CheckBox v-if="typeof cellProps.rowData.BrandTypeId === 'boolean'"
class="right space" />
<Input v-if="typeof cellProps.rowData.BrandTypeId != 'boolean'"
class="right space"
label="Change Colors" />
</div>
</template>
<script lang="ts" setup>
let hidden = true
const onChange = () => {
console.log("toggle successful", hidden)
hidden = !hidden;
}
</script>
隐藏值在渲染时起作用,不显示 div 中的复选框和输入。单击“隐藏”值确实会发生变化,但 v-show 不会发生变化。 这怎么设置不正确?
您可以使用 ref
使您的变量具有反应性:
import { ref } from "vue'
let hidden = ref(true)
const onChange = () => {
console.log("toggle successful", hidden)
hidden.value = !hidden.value;
}