Я создал небольшой компонент для переключателя, похожего на matrialdesign. Состояние переключателя можно установить с помощью свойства «active». Для переключения статуса я использую вычисленное значение, потому что реквизиты не могут быть изменены.
Если я использую тег компонента с жестко закодированным «активным» пропом, это сработает.
Если я использую геттер vuex для установки пропа, то значение пропа получить правильное, но вычисленное значение «неопределено».
Здесь компонент:
<template>
<div class="flex items-center">
<div class="flex h-6 rounded-full shadow w-12 cursor-pointer" :class="status" @click="toggle">
<div class="flex h-6 rounded-full shadow w-6 bg-blue-500">
<slot></slot>
</div>
</div>
<label class="m-0 ml-2 text-lg normal-case">{{label}}</label>
</div>
</template>
<script>
export default{
props:{
active: Boolean,
label: String
},
data() {
return { isActive: this.active }
},
computed:{
status(){
return this.isActive ? 'justify-end bg-success' : 'justify-start bg-primary';
}
},
methods:{
toggle(){
this.isActive = !this.isActive;
},
}
}
</script>
Это работает:
<toggle label="Foo" active="true">Foo</toggle>
Это не:
<toggle label="Foo" :active="this.$store.getters.FooStatus">Foo</toggle>
В Vue Devtools я вижу, что active это true / false в зависимости от FooStatus, но isActive не определено.