Uncaught (in promise) ReferenceError: отправка не определена

Uncaught (in promise) ReferenceError: отправка не определена

07.01.2020 10:18:09 Просмотров 56 Источник

Я использую vuex, и у меня есть индекс.js и auth.js в папке магазина. Я хочу, чтобы в моем сигнине действовал базовый знак.vue с вызовом действия из магазина, но я получил эту ошибку "Uncaught (in promise) ReferenceError: dispatch is not defined", когда я вызываю действие из другого действия с ключом dispatch в auth.JS.

индекс.JS

import Vue from 'vue'
import Vuex from 'vuex'
import auth from './auth'

Vue.use(Vuex);

export default new Vuex.Store({
    state: {},
    mutations: {},
    actions: {},
    modules: {
        auth
    }
})

автор.JS

import axios from "axios";

export default {
    namespaced: true,
    state: {
        token: null,
        user: null
    },
    mutations: {
        SET_TOKEN(state, token) {
            state.token = token;
        },
        SET_USER(state, data) {
            state.user = data;
        }
    },
    actions: {
        async signIn(_, credentials) {
            let response = await axios.post("auth/signin", credentials)
            /* eslint-disable */
            dispatch('attempt', response.data.token);
        },
        async attempt({commit}, token) {
            commit("SET_TOKEN", token);

            try {
                let response = await axios.get('auth/me', {
                    headers: {
                        'Authorization': 'Bearer ' + token
                    }
                });
                commit("SET_USER", response.data)
            } catch (e) {
                commit("SET_TOKEN", null);
                commit("SET_USER", null);
            }
        }
    }
}

Авторизоваться.вю

<template>
    <div>
        <form @submit.prevent="submit">
            <div>
                <label for="email">Email</label>
                <input id="email" type="email" name="email" v-model="form.email">
            </div>
            <div>
                <label for="password">Password</label>
                <input id="password" type="password" name="password" v-model="form.password">
            </div>
            <div>
                <button type="submit">Submit</button>
            </div>
        </form>
    </div>
</template>

<script>
    import {mapActions} from "vuex";

    export default {
        name: "signIn",
        data() {
            return {
                form: {
                    email: "",
                    password: ""
                }
            }
        },
        methods: {
            ...mapActions({
                signIn: 'auth/signIn'
            }),
            submit() {
                this.signIn(this.form)
            }
        }
    }
</script>
У вопроса есть решение - Посмотреть?

Ответы - Uncaught (in promise) ReferenceError: отправка не определена / Uncaught (in promise) ReferenceError: dispatch is not defined

Является ответом!
Shashidhar Reddy

07.01.2020 10:35:30

асинхронные попытка({совершить}, маркер) такой, что вам нужно сделать написать отправка {отправка} в асинхронных входа (функция). т. е. async attempt({dispatch}, token)

Я думаю, что это может сработать! :)

Закрыть X