Решено: отправка Nativescript vuex не определена - PullRequest
0 голосов
/ 01 августа 2020

У меня появляется сообщение об ошибке при вызове действия в vuex, поскольку метод отправки показывает, что он не определен и не имеет свойства then.

JS: [vuex] unknown action type: auth/login 
JS: [Vue warn]: Error in v-on handler: "TypeError: Cannot read property 'then' of undefined"

Это не работает в этой строке:

this.$store.dispatch("auth/login", this.user).then(
    () => {
      this.$navigateTo(ProfileView);
    },
    error => {
      this.loading = false;
      this.message =
          (error.response && error.response.data) ||
          error.message ||
          error.toString();
    }
);

И это еще один код действий и модулей в vuex, я опускаю некоторый код, поскольку я думаю, что это не имеет отношения, но если вам нужен дополнительный код для проверки ошибки, я могу поделиться им.

auth .module. js

import AuthService from '../services/auth.service';

const user = JSON.parse(localStorage.getItem('user'));
const initialState = user
    ? {status: {loggedIn: true}, user}
    : {status: {loggedIn: false}, user: null};

export const auth = {
    namespaced: true,
    state: initialState,
    actions: {
        login({commit}, usuario) {
            return AuthService.login(usuario).then(
                user => {

                    usuario.token = user.token;
                    delete usuario.password;
                    commit('loginSuccess', usuario);
                    return Promise.resolve(usuario);
                },
                error => {
                    commit('loginFailure');
                    return Promise.reject(error);
                }
            );
        },
        logout({commit}) {
            AuthService.logout();
            commit('logout');
        },
    },
    mutations: {
        loginSuccess(state, user) {
            state.status.loggedIn = true;
            state.user = user;
        },
        loginFailure(state) {
            state.status.loggedIn = false;
            state.user = null;
        },
        logout(state) {
            state.status.loggedIn = false;
            state.user = null;
        }
    }
};

main [точка] js

import Vue from 'nativescript-vue';
import store from './store'
new Vue({
  store,
  render: h => h('frame', [h(App)])
}).$start()

store / index. js

import Vue from 'nativescript-vue';
import Vuex from 'vuex';
import { auth } from './auth.module';
import { process} from "./process.module";

Vue.use(Vuex);

export default new Vuex.Store({
    modules: {
        auth,
        process
    }
});
...