我正在学习 Vuejs,在我的项目中,自从我尝试使用商店(VUEX)以来,我收到了一些警告并且没有显示任何内容
所以我有:
├── index.html └── src ├── views └── Feed.vue └──store └── index.ts ├── App.vue ├── main.ts
我的 main.ts 是:
// 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");
我的./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 } }, })
我的./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>
看起来我不明白 Vuex 中的某些内容,但我不知道是什么。你能告诉我出了什么问题吗? (我希望事情不多:))/有人可以帮助我吗?请。
谢谢
看起来您从
./store/index.ts
中的行中收到错误,您试图将函数调用应用到此行上的商店实例的结果导出:export 默认存储();
商店实例确实不是一个函数,您将结果导入
main.ts
中。尝试仅导出商店实例:export默认商店
也许您不需要之后的行:
不仅仅是 @Lucas David Ferrero 的真正好的答案,我在我的 Feed.vue 中忘记了一件事......:安装了商店! 所以我的文件现在是: