Utilisez la flèche de la fonction en vue calculées ne fonctionne pas
Je suis à l'apprentissage de Vue et face à un problème lors de l'utilisation de la flèche en fonction calculée de la propriété.
Mon code d'origine fonctionne très bien (Voir extrait ci-dessous).
JS:
new Vue({
el: '#app',
data: {
turnRed: false,
turnGreen: false,
turnBlue: false
},
computed:{
switchRed: function () {
return {red: this.turnRed}
},
switchGreen: function () {
return {green: this.turnGreen}
},
switchBlue: function () {
return {blue: this.turnBlue}
}
}
});
CSS:
.demo{
width: 100px;
height: 100px;
background-color: gray;
display: inline-block;
margin: 10px;
}
.red{
background-color: red;
}
.green{
background-color: green;
}
.blue{
background-color: blue;
}
HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.4/vue.js"></script>
<div id="app">
<div class="demo" @click="turnRed = !turnRed" :class="switchRed"></div>
<div class="demo" @click="turnGreen = !turnGreen" :class="switchGreen"></div>
<div class="demo" @click="turnBlue = !turnBlue" :class="switchBlue"></div>
</div>
Cependant, après que j'ai changer de méthodes dans la propriété calculée, la couleur ne changera pas (bien que le turnRed valeur encore basculer entre le vrai et le faux avec succès).
C'est mon code:
computed:{
switchRed: () => {
return {red: this.turnRed}
},
switchGreen: () => {
return {green: this.turnGreen}
},
switchBlue: () => {
return {blue: this.turnBlue}
}
}
Dois-je utiliser la mauvaise syntaxe ?
- jetez un oeil à ma réponse. J'ai notamment travaillé à la ciselée.
- la flèche de la fonction à modifier la portée de cette à son parent
Vous devez vous connecter pour publier un commentaire.
Vous êtes confronté à cette erreur, car une flèche fonction ne serait pas lier
this
à la vue de l'instance pour laquelle vous définissez la propriété calculée. Le même qui se passerait si vous deviez définirmethods
à l'aide d'une flèche fonction.Vous pouvez lire à ce sujet ici.
this
objet: calculée: { switchRed: () => ({rouge: "rouge"}), ... }La flèche funtion perdu la VueJS composant contexte. Pour vos fonctions dans
methods
,computed
,watch
, ... utiliser les fonctions de l'Objet :Lors de la création d'calculé que vous n'utilisez pas
=>
, vous devriez utiliserswitchRed () {...
Prendre un coup d'oeil à l'extrait de code. Fonctionne comme il se doit.
Elle s'applique à toutes calculé,méthode, les observateurs etc.
JS:
CSS:
HTML:
Et pourquoi pas quelque chose de plus simple comme ça?
JS:
CSS:
HTML: