Как подписать изменения мутации магазина с несколькими модулями? - PullRequest
0 голосов
/ 07 марта 2019

Использование vue.js для создания страницы входа.В моем проекте я разделил свой магазин на два модуля (User 、 Info).

enter image description here

В пользовательском модуле actions.js направлены наобрабатывать некоторые асинхронные запросы (например, login 、 register) и фиксировать соответствующую мутацию.

export const userActions = {
  login({commit}, loginUser) {
    commit(LOGIN)
    axios.post(`${ API_BASE_USER }/login`, loginUser)
         .then(res => {
           const { token } = res.data
           if (res.status == 200) { commit(LOGIN_SUCCESS, token) }
           else { commit(LOGIN_FAILURE, res.data) }
         })
  }
.......
}

Я знал, что: В Vuex мы можем подписывать мутации магазина. Я хочу подписать каждуюмутация изменяется в Login.vue, так что я могу загрузить уведомление, чтобы сообщить пользователю логин успешно или нет.

Login.vue

created () {
    this.$store.subscribe(mutation => {
      switch (mutation.type) {
        case LOGIN_SUCCESS:
          console.log('view success')
        // load success nitification
          break

        case LOGIN_FAILURE:
          console.log('view failure')
       // load success nitification
          break

        case LOGIN_WARNING:
          console.log('view warning')
          break
      }
    })
}

Но это, похоже, не работает.Нельзя ли подписаться на мутации определенного модуля в магазине с несколькими модулями?

1 Ответ

0 голосов
/ 07 марта 2019

Поскольку вы используете пространство имен для модулей магазина, вы должны учитывать это при подписке.Например:

created () {
    this.$store.subscribe(mutation => {
      switch (mutation.type) {
        case MODULE_NAME + '/' + LOGIN_SUCCESS:
          console.log('view success')
        // load success nitification
          break
        ...
      }
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...