Как вызвать метод компонента из store.js - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть компонент Login.vue, у которого есть метод postData ()

postData() {

  this.$store.dispatch('doLogin', fdata)

},

doLogin находится в store.js

  actions: {

    doLogin({ commit }, loginData) {

      commit('loginStart');

      axios.post(this.state.apiURL+'/login', {
        ...loginData
      })
      .then(response => {

        commit('loginStop', null);
        commit('updateAccessToken', response.data.access_token);

      })
      .catch(error => {

        commit('loginStop', error);

      })
    },

как вызвать обратно из router.js метод вдругой компонент, скажем еще раз из Login.vue?

Я хочу вообще вызвать Toast, который является начальной загрузкой в ​​методах Login.vue.

Есть идеи?

1 Ответ

0 голосов
/ 02 ноября 2019

Метод компонента Login.vue

      this.$store.dispatch('doLogin', fdata).then(response => {
          console.log("response from promise:",response)
        }, error => {
            this.makeToast(true, error, 'danger', 'b-toaster-top-center')
            console.error("Got error:",error)
        }) 

store.js Действия

    doLogin({ commit }, loginData) {
      return new Promise((resolve, reject) => {
          console.log("store - doLogin", loginData)
          commit('loginStart');
          axios.post(this.state.apiURL+'/login', {
            ...loginData
          })
          .then(response => {
            localStorage.setItem('accessToken', response.data.access_token);
            commit('loginStop', null);
            commit('updateAccessToken', response.data.access_token);
            router.push('/profile');
            resolve(response);
          })
          .catch(error => {
            console.log('error', error)
            commit('loginStop', error);
            commit('updateAccessToken', null);
            reject(error)
          })
      })
    },
...