Pour un tel composant
<template>
<div>
<router-link :to="{name:'section', params: { sectionId: firstSectionId }}">Start</router-link>
</div>
</template>
<script lang="ts">
import { mapActions } from "vuex"
export default {
mounted() {
this.getSectionId()
},
computed: {
firstSectionId() {
return this.$store.state.firstSectionId
}
},
methods: mapActions(["getSectionId"])
}
</script>
Magasin :
const store: any = new Vuex.Store({
state: {
firstSectionId: null
},
// actions,
// mutations
})
J'ai une requête web dans le getSectionId
et il récupère les données de manière asynchrone et appelle une mutation qui remplira les données de la base de données. firstSectionId
en state
. Lors du rendu initial firstSectionId
es null
et j'obtiens l'avertissement qu'un paramètre requis est manquant lors du rendu de router-link
.
Il n'y a pas de problème pour ajouter v-if="firstSectionId"
. Mais en général, quelle est l'approche pour récupérer les données d'un serveur afin de les afficher ? Actuellement, tous mes composants vérifient s'il y a des données présentes dans le magasin avant d'effectuer le rendu, est-ce normal ou y a-t-il une meilleure façon d'attendre que les données soient chargées avant d'effectuer le rendu ?