Comment mettre à jour la valeur des accessoires du composant enfant à partir du composant parent?
À partir de mon parent
composant, je dois déclencher une child
partie de code d' un composant contenant une Firebase
requête. Notez que dans le composant enfant, ce code est déclenché dans le mounted()
hook (mais pour l'exécuter à partir du composant parent, je suppose que je devrai déplacer ce code vers une méthode ou quelque chose).
Quelle est la manière recommandée pour réaliser une telle chose?
Voici mon parent
code de composant - simplifié pour plus de clarté:
<template>
<div>
<nav>
<v-btn @click="viewNextWeek"></v-btn>
</nav>
<project-row :mon="mon"></new-row-form>
</div>
</template>
<script>
import ProjectRow from './ProjectRow.vue';
import store from '../store';
import moment from 'moment';
export default {
name: 'home',
components: {
ProjectRow
},
data() {
return {
mon: moment().startOf('isoWeek')
}
},
methods: {
viewNextWeek: function() {
this.mon = moment().startOf('isoWeek').add(7, 'days');
}
}
}
</script>
Child
composant - simplifié aussi:
<template>
<div>
<input v-model="monTime">
</div>
</template>
<script>
import { db } from '../firebase';
export default {
props: [
'mon'
],
mounted() {
var timesRef = db.collection('times');
var timesWeek = timesRef.where('date', '==', this.mon);
timesWeek.get()
.then((querySnapshot) => {
querySnapshot.forEach((doc) => {
this.monTime = doc.data().time;
});
})
.catch(function(error) {
console.log('Error getting documents: ', error);
});
}
}
</script>
pour y parvenir, vous devez utiliser la event bus
communication entre ces deux composants. Tout d'abord, vous devez créer un bus d'événements global qui peut être une gestion centrale des événements et vous donnera la possibilité d'accéder à n'importe quel événement à partir de n'importe quel composant de votre application vuejs. dans votre cas ici, vous devez émettre un événement à partir de votre composant parent dans la viewNextWeek
méthode et le capturer mounted
dans le composant enfant. Ainsi, chaque fois que votre mon
valeur change dans votre composant parent, déclenchera un événement pour le composant enfant à mettre à jour à l' mon
intérieur.
pour plus de détails sur l'utilisation du bus d'événements global, lisez cet article article sur le bus d'événements global