Parce qu'il s'agit d'une communication entre père et fils, j'ai suivi le tutoriel en ligne pour créer un fichier bus.js
importer Vue depuis 'vue'
exporter la nouvelle Vue par défaut()
Le premier composant login.vue est utilisé pour $emit
this.usermsg est un objet
bus.$emit('usermessage', this.usermsg)
this.$router.push({name: 'mine'})
Le premier composant mine.vue est utilisé pour $emit
data() {
return {
userData: {},
}
},
created() {
bus.$on('usermessage', (usermsg) => {
console.log(this.msg)
console.log(usermsg.name)
this.userData= usermsg
console.log('mine接收到的usermsg')
console.log(this.userData)
})
mounted() {
console.log(this.userData)
}
Les données de userData ne seront pas modifiées et l'affectation ne prendra pas effet. Est-ce que cela indique la mauvaise méthode ? Ou ne devrais-je pas modifier la mission de cette façon ? J'ai essayé de nombreuses méthodes et je suis confus
?
Tout d'abord, votre mine.vue doit d'abord être initialisé. Après $on('usermessage'), le code correspondant déclenche $emit('usermessage') avant de recevoir cet événement. Selon votre code actuel, lorsque vous émettez, mine.vue n'a pas été initialisé du tout, cet événement ne peut donc pas être surveillé.
.Ensuite, votre pointage this est correct car vous avez utilisé une fonction de flèche. Pour plus de détails, veuillez consulter le problème de pointage this des fonctions de flèche. (Même si je ne sais pas ce que vous voulez faire avec ce.msg, il n'y a évidemment pas de msg dans les données)
De plus, votre idée est de vous connecter pour obtenir les informations de l'utilisateur et les afficher sur la page mine.vue . Il est recommandé d'utiliser vuex pour enregistrer les informations utilisateur, afin de pouvoir les obtenir sur une autre page
Réponse correcte à l'étage ;
Lorsque vous passez à la connexion, le composant de la mine sera détruit. Vous pouvez imprimer quelque chose dans le cycle de vie détruit pour voir s'il est correct. De cette façon, lorsque vous reviendrez sur le mien, le contenu à l'intérieur sera réinitialisé, de sorte que ce que vous imprimerez sera toujours le contenu qui vient d'être initialisé et sur lequel aucune opération n'a été effectuée.