J'apprends Vuejs et dans mon projet depuis que j'ai essayé d'utiliser store (VUEX), j'ai reçu des avertissements et rien ne s'est affiché
J'ai donc :
├── index.html └── src ├── views └── Feed.vue └──store └── index.ts ├── App.vue ├── main.ts
Mon fichier main.ts est :
// initialisation des éléments pours VUE import { createApp } from "vue"; import App from "./App.vue"; import "./registerServiceWorker"; import router from "./router"; import store from "./store"; import axios from 'axios' import VueAxios from 'vue-axios' // initialisation des imports pour Font Awesome import { library } from "@fortawesome/fontawesome-svg-core"; import { faUserSecret } from "@fortawesome/free-solid-svg-icons"; import { faSpinner, faPaperPlane, faHandPeace, faSignOutAlt, faShieldAlt, faUserPlus, faImage, faEdit, faUsersCog, faTools, faRss, faTimesCircle, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; // initialisation des imports pour Bootstrap import "bootstrap/dist/css/bootstrap.min.css"; import "bootstrap"; import "bootstrap/dist/js/bootstrap.js"; // intégration des icones font awesome à la librairy library.add(faUserSecret); library.add(faSpinner); library.add(faPaperPlane); library.add(faHandPeace); library.add(faSignOutAlt); library.add(faShieldAlt); library.add(faUserPlus); library.add(faImage); library.add(faEdit); library.add(faEdit); library.add(faUsersCog); library.add(faTools); library.add(faRss); library.add(faTimesCircle); // Création de l'app const app = createApp(App); app.use(store); app.use(router); app.use(VueAxios, axios); app.provide('axios', app.config.globalProperties.axios) ; app.component("font-awesome-icon", FontAwesomeIcon); app.mount("#app");
my./store/index.ts
// Imports import { createApp } from 'vue' import { createStore } from 'vuex' import axios from 'axios'; //Create Store : export const store = createStore({ // Define state state () { return{ feedList: [] } }, // Define Actions actions: { getPosts( { commit } ) { axios.get('http://localhost:3001/api/feed') .then(feedList => { commit('setFeedList', feedList) }) } }, // Define mutations mutations: { setFeedList(state:any, feedList:any) { state.data = feedList } }, })
Mon ./views/Feed.vue :
<template> <div id="Feed"> <div id="profil" class="col-12 col-md-3"> <Cartridge /> </div> <div id="feedcontent" class="col-12 col-md-9"> <SendPost /> <div id="testlist" v-for="thePost in feedList" :key="thePost"> {{ thePost }} </div> </div> </template> <script lang="ts"> import Cartridge from '@/components/Cartridge.vue'; import SendPost from '@/components/SendPost.vue'; import { computed } from 'vue' import { useStore } from 'vuex' export default { name: 'Feed', components: { Cartridge, SendPost }, setup () { const store = useStore(); const feedList = computed(() => store.state.data.feedList); console.log("feedList > " + feedList.value); return { feedList } }, } </script> <style lang="scss"> @import "../scss/variables.scss"; #profil { position: fixed; margin: 0; height: 100%; } #feedcontent { position: fixed; height: 100%; right: 0; background-color: $groupo-colorLight1; overflow-y: scroll; ::-webkit-scrollbar { width: 8px; color: $groupo-color1; } ::-webkit-scrollbar-track { background: $groupo-colorLight2; width: 20px; -webkit-box-shadow: inset 0 0 6px rgba($groupo-color4, 0.3); } ::-webkit-scrollbar-thumb { background: $groupo-color4; } ::-webkit-scrollbar-thumb:hover { background: $groupo-color1; } } </style>
On dirait que je ne comprends pas quelque chose dans Vuex, mais je ne sais pas quoi. Pouvez-vous me dire ce qui ne va pas ? (J'espère que ce n'est pas grand chose :)) / Quelqu'un peut-il m'aider ? s'il te plaît.
Merci
Il semble que vous obteniez l'erreur de la ligne
./store/index.ts
où vous essayez d'appliquer un appel de fonction à l'exportation résultante de l'instance de magasin sur cette ligne :export 默认存储();
L'instance store n'est en effet pas une fonction, vous importez le résultat dans
main.ts
. Essayez d'exporter uniquement l'instance du magasin :export默认商店
Peut-être que vous n'avez pas besoin des lignes après :
Pas juste une très bonne réponse de @Lucas David Ferrero, j'ai oublié une chose dans mon feed.vue... : le magasin est installé ! Mon dossier est donc maintenant :