I'm learning Vuejs and in my project since I try to use store (VUEX) I get some warnings and nothing is shown
So I have:
├── index.html └── src ├── views └── Feed.vue └──store └── index.ts ├── App.vue ├── main.ts
My main.ts is:
// 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 } }, })
My./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>
Looks like I don't understand something in Vuex, but I don't know what. Can you tell me what's wrong? (I hope it's not much:)) / Can anyone help me? please.
Thanks
It looks like you are getting an error from the line in
./store/index.ts
where you are trying to apply a function call to the resulting export of the store instance on this line:export default storage();
The store instance is indeed not a function, you import the result into
main.ts
. Try exporting only the store instance:export default store
Maybe you don't need the lines after:
Not just @Lucas David Ferrero's really good answer, I forgot one thing in my feed.vue...: the store is installed! So my file now is: