将存储分离到单独的文件(操作,突变,获取方法)中,现在无法使用api调用

问题描述 投票:0回答:1

我首先要大量散布商店,因此所有吸气剂,动作和突变均按照以下答案位于单独的文件中:https://stackoverflow.com/a/50306081/5434053

我在服务文件中有API调用,POST api调用似乎可以工作,但GET调用不起作用,该操作似乎没有任何回报。我错过了什么吗?


import Vue from 'vue';
import Vuex from 'vuex';

import actions from './actions';
import getters from './getters';
import mutations from './mutations';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    status: '',
    token: localStorage.getItem('token') || '',
    user: {},
    movie: {},
    movies: {}
  },
  actions,
  getters,
  mutations,
});

商店/ actions.js

import axios from 'axios'
import {APIService} from '../services/APIService';
const apiService = new APIService();

let getMovies = async ({commit, state, getter}) => {
    try {
      await apiService.getMovies(localStorage.getItem('token')).then((data, error) => {
        for (const movie of data.data.data.movies) {
          movie.edit = false;
          movie.deleted = false;
        }
        this.movies = data.data.data.movies;
        console.log(data)
        commit("fetch_movies", this.movies);        
      })
    } catch(error) {
      commit('auth_error')
      localStorage.removeItem('token')
      console.log(error)
    }
}

export default {
  getMovies,
};
api vue.js action vuex
1个回答
0
投票

似乎您正在从actions导入./actions。但是,当我在store/actions.js处查看您的文件时,您没有导出任何内容。

为了使JavaScript模块正常工作,您必须在文件中添加export语句-这样才能在其他位置导入导出的变量/属性。

也:您似乎只声明了函数getMovies()而不将其添加到actions对象(在store.js中导入)。

尝试一下:

// in store/actions.js

// your code..

const actions = {
  getMovies,
}

export default actions;
© www.soinside.com 2019 - 2024. All rights reserved.