With pinia on VueJS, I use a store to store my licenses, and the licenses have a number that references the project. Lists of items with information are located in other stores. So I created getters in the license store to get the project's information (name, company...).
However, when the page loads, the values for the getters do not appear, when I go into the Vuejs web browser extension to view my store, the values do appear. And I don't understand how to use getters in templates...I tried but no result...
I made a video to demonstrate my problem: https://www.youtube.com/watch?v=Er4xcQ-Mq2Y
thanks for your help!
My browsing page:
<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>
License stores in src/stores:
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; } }); }), }, });
use this:
$state
is an expanded object, so there will be no response