Avec pinia sur VueJS, j'utilise un store pour stocker mes licences, et les licences ont un numéro qui référence le projet. Des listes d'articles contenant des informations se trouvent dans d'autres magasins. J'ai donc créé des getters dans le magasin de licences pour récupérer les informations du projet (nom, société...).
Cependant, lorsque la page se charge, les valeurs des getters n'apparaissent pas, lorsque j'accède à l'extension du navigateur Web Vuejs pour afficher ma boutique, les valeurs apparaissent. Et je ne comprends pas comment utiliser les getters dans les templates... J'ai essayé mais aucun résultat...
J'ai fait une vidéo pour démontrer mon problème : https://www.youtube.com/watch?v=Er4xcQ-Mq2Y
Merci pour votre aide !
Ma page de navigation :
<h1>Licences actives (de type "DEV")</h1> <table> <tr> <th>Numero/Clé</th> <th>Fin d'activation</th> <th>type</th> <th>Entreprise</th> <th>N° d'Affaire<br />(Projet)</th> <th>Projet</th> <th>Responsable</th> <th>Version</th> <th>Version Soft</th> <th>Durée restante <br />(jours)</th> </tr> <tr v-for="article in currentList" :key="article.numero"> <td style="color: red">{{ article.numero }}</td> <td>{{ Date_formate(new Date(article.fin_activation)) }}</td> <td>{{ article.type }}</td> <td style="color: red">{{ article.entreprise }}</td> <td>{{ article.affaire }}</td> <td>{{ article.name }}</td> <td>{{ article.responsable }}</td> <td>{{ article.version }}</td> <td>{{ article.version_soft }}</td> <td> {{ Math.round((new Date(article.fin_activation) - Date.now()) / 86400000) }} </td> </tr> <br /> </table> </template> <script setup> import { computed, onMounted, ref } from "@vue/runtime-core"; import { useListLicences } from "../stores/licence"; import { Date_formate } from "../plugin/functions"; const useListLicences2 = useListLicences(); const currentList = computed(() => { return useListLicences2.$state.list; </script>
Magasins de licences en src/magasins :
import { defineStore } from "pinia"; import { useListProjets } from "./projets"; const entreprises = useListEntreprises(); const projets = useListProjets(); export const useListLicences = defineStore({ id: "licences", state: () => ({ list: [], }), persist: true, getters: { getList: (state) => state.list, getName: (state) => //pour afficher Projet dans le tableau state.list.map((licence) => { projets.list.map((projet) => { if (licence.projet_affaire == projet.affaire) { return licence.name = projet.projetNom; } }); }), getResponsable: (state) => //pour afficher Responsable state.list.map((licence) => { projets.list.map((projet) => { if (licence.projet_affaire == projet.affaire) { return licence.responsable = projet.userPseudo; } }); }), getEntreprise: (state) => //pour afficher Entreprise state.list.map((licence) => { projets.list.map((projet) => { if (licence.projet_affaire == projet.affaire) { return licence.entreprise = projet.entrepriseNom; } }); }), getAffaire: (state) => //pour afficher le Num d'affaire state.list.map((licence) => { projets.list.map((projet) => { if (licence.projet_affaire == projet.affaire) { return licence.affaire = projet.affaire; } }); }), getID_Entreprise: (state) => state.list.map((licence) => { entreprises.list.map((entreprise) => { if (licence.entreprise == entreprise.entreprise_nom) { return licence.ID_entreprise = entreprise.id; } }); }), getContacts: (state) => state.list.map((licence) => { projets.list.map((projet) => { if (licence.projet_affaire == projet.affaire) { return licence.contact1 = projet.email1; } }); }), }, });
Utilisez ceci :
$state
est un objet développé, il n'y aura donc pas de réponse