Как мы можем передать данные в vuex action - PullRequest
0 голосов
/ 30 апреля 2020

Мне не очень комфортно с действием в vuex.

Я не хочу называть в моем компоненте Login действие vuex, которое делает вызов API с помощью топора ios.

Но данные, которые были переданы, поскольку мой компонент не получен в действии ..

Я не знаю, как заставить это работать ..


this.$store.dispatch('REGISTER', {
          username: this.username,
          email: this.email,
          password: this.password
        })
        .then((response) => {
          console.log(response)
          this.$router.push('/login')
        })
        .catch (() => {
          this.error = true;
        })

и в моем модуле vuex:


import axios from "axios";

export default {
  state: {},
  mutations: {},
  getters: {},
  actions: {
    REGISTER: ({ username, email, password }) => {
      return new Promise((resolve, reject) => {
        axios
          .post(process.env.VUE_APP_API_URL + "auth/register", {
            username: username,
            email: email,
            password: password
          })
          .then(({ data, status }) => {
            if (status === 201) {
              localStorage.setItem('access_token', data.data.token);
              resolve(true);
            }
          })
          .catch(error => {
            reject(error);
          });
      });
    },
  }
};

Благодарю

1 Ответ

1 голос
/ 30 апреля 2020

Вы передаете объект в действие vuex. Попробуйте изменить метод действия следующим образом:

REGISTER: ({ commit }, data) => {
let {username, email, password} = data

EDIT: в частности, первый аргумент, который получает любое действие vuex, - это объект контекста, содержащий commit, state, getters и dispatch. Второй аргумент - это любой объект, который вы передаете ему через ваш вызов для отправки. - maiorano84

...