[Vue] VuetifyのUIを使う際の注意点 [Vuetify]
例えばSwitchsを使う際、以下のようにv-modelを使うとちょっと困ることがある。
<!-- switch.vue -->
<template>
<div class="item switch">
<v-switch v-model="bool" @change="change"></v-switch>
</div>
</template>
具体的にどう困るのかというと、上位コンポーネントによってこのコンポーネントの操作以外でboolが変わった場合 (例えばAll ResetみたいなボタンでこのComponentに渡しているboolの参照元プロパティがtrue -> falseになった場合とか)、boolプロパティ自体はリアクティブに反映されるが、Switchが動いてくれない。
色々試してみたが、結局valueを使うことでボタンもリアクティブに動いてくれるようになった
<v-switch :value="bool" @change="change"></v-switch>
ただ、この場合も少し問題があり、@changeで取って来れるvalueがswitch=falseの場合になぜかnullが返却されるようになる(v-modelを使うとちゃんとfalseが返ってくる)。
methods: {
change(value) {
// true or null を true or falseに変換してemit
this.$emit("change", value ? true : false);
}
}