VueJs 3 - Vuex:未捕獲類型錯誤:儲存不是函數
P粉824889650
P粉824889650 2024-03-25 21:26:36
0
2
446

我正在學習 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 中的某些內容,但我不知道是什麼。你能告訴我出了什麼問題嗎? (我希望事情不多:))/有人可以幫助我嗎?請。

謝謝

P粉824889650
P粉824889650

全部回覆(2)
P粉463291248

看起來您從 ./store/index.ts 中的行收到錯誤,您試圖將函數呼叫套用到此行上的商店實例的結果匯出:

export 預設儲存();

商店實例確實不是函數,您將結果匯入 main.ts 中。嘗試僅匯出商店實例:

export預設商店

#也許您不需要之後的行:

const app = createApp({})
app.use(store)
P粉267791326

不僅僅是 @Lucas David Ferrero 的真正好的答案,我在我的 Feed.vue 中忘記了一件事......:安裝了商店! 所以我的文件現在是:



sssccc

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板