Ich benutze Vue-Schalter, der ein- und ausgeschaltet wird und ich muss wissen, in welchem Zustand es ist. Gemäß der Dokumentation unter https://www.npmjs.com/package/vue-switch soll ich nur verwenden: value.sync = " toggle "in der Switch-Komponente mit einer Dateneigenschaft namens 'toggle', was ich getan habe. Ich erhalte die folgende Fehlermeldung:Bind Vue-Schalter Wert auf Daten Prop
Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "value" vue switch found in ---> <Switcher> at E:\Dev\BackgroundCheck.Members\front-end\node_modules\vue-switch\switch.vue
Mein HTML:
<switcher size="lg" color="green" :value.sync="toggle"></switcher>
Mein JS:
<script>
import mySwitch from 'vue-switch';
export default {
name: 'BackgroundReports',
components: {
'switcher': mySwitch
},
computed: {
report() { return this.$store.getters.currentReport },
isBeingMonitored() { return this.$store.getters.isBeingMonitored }
},
mounted() {
this.toggle = this.isBeingMonitored;
}
}
</script>
Der switch.vue Code:
<template>
<div :class="className" @click="onClick">
<span class="open">{{ openName }}</span>
<span class="close">{{ closeName }}</span>
</div>
</template>
<script>
'use strict';
export default {
props: {
value: {
default: true,
twoWay: true
},
size: {
type: String,
default: 'md中'
},
// blue red green orange
color: {
type: String,
default: 'red'
},
openValue: {
default: true
},
closeValue: {
default: false
},
openName: {
type: String,
default: 'ON'
},
closeName: {
type: String,
default: 'OFF'
},
disabled: {
type: Boolean,
default: false
}
},
computed: {
className() {
let {
value,
openValue,
closeValue,
size,
color,
disabled
} = this;
return {
'vue-switch': true,
'z-on': value === openValue,
'z-disabled': disabled,
['s-' + size]: true,
['c-' + color]: true
};
}
},
methods: {
onClick() {
let {
disabled,
value,
openValue,
closeValue
} = this;
if (!disabled) {
if (openValue === value) {
this.value = closeValue;
} else {
this.value = openValue;
}
}
}
}
}
</script>
Meine Vermutung ist Vue-Switch wurde für Vue 1 geschrieben, wo diese Art von Sache in Ordnung ist. –
@RoyJ Mist ... Danke für die Eingabe – Linx
Um es mit Vue 2 arbeiten zu lassen, müssen Sie nur die Zeilen ersetzen, die 'value' mit Zeilen zuweisen, die' $ ems' den neuen Wert gemäß [the way '. sync funktioniert jetzt] (https://vuejs.org/v2/guide/components.html#sync-Modifier) –