аутентификация firebase в режиме модуля хранилища текстов - PullRequest
0 голосов
/ 22 марта 2020

С момента конвертации из Vuex classi c в режим модуля моя функция входа не работает

index. vue интерфейс входа

login() {
  if (this.$refs.loginForm.validate()) {
    const email = this.loginData.email
    const password = this.loginData.password
    this.$notifier.showMessage({ text: 'Logging in', color: 'primary' })
    this.$store.dispatch('user/userLogin', { email, password }).then(
      (result) => {
        //
      },
      (error) => {
        this.$notifier.showMessage({ text: error, color: 'error' })
      }
    )
  }

store / user. js мутации

const state = () => ({
  user: null,
  isAuthenticated: false
})

const mutations = {
  setUser(state, payload) {
    state.user = payload
  },
  setIsAuthenticated(state, payload) {
    state.isAuthenticated = payload
  }
}

store / user. js действие при входе в систему

  userLogin({ commit }, { email, password }) {
    return new Promise((resolve, reject) => {
      auth
        .signInWithEmailAndPassword(email, password)
        .then((user) => {
          console.log('logged in')
          commit('setUser', user)
          commit('setIsAuthenticated', true)
          this.$router.push({
            name: 'home'
          })
          resolve(true)
        })
        .catch((error) => {
          commit('setUser', null)
          commit('setIsAuthenticated', false)
          this.$router.push({
            path: '/'
          })
          reject(error)
        })
    })
  },

При нажатии входа в систему на консоль выводятся сообщения об ошибках типа

client.js?06a0:77 Error: [vuex] do not mutate vuex store state outside mutation handlers.
    at assert (vuex.esm.js?2f62:90)
    at Vue.store._vm.$watch.deep (vuex.esm.js?2f62:789)
    at Watcher.run (vue.runtime.esm.js?2b0e:4568)
    at Watcher.update (vue.runtime.esm.js?2b0e:4542)
    at Dep.notify (vue.runtime.esm.js?2b0e:730)
    at B.reactiveSetter [as a] (vue.runtime.esm.js?2b0e:1055)
    at Tb (auth.esm.js?b7aa:27)
    at B.k.Oc (auth.esm.js?b7aa:26)
    at lc (auth.esm.js?b7aa:29)
    at hc (auth.esm.js?b7aa:29)

It похоже, связано с commit('setUser', user). Поскольку я использую v-модель для ввода (электронная почта, пароль), я попытался slice () / сделать копию входных значений безрезультатно. Что мне здесь не хватает?

РЕДАКТИРОВАТЬ: Добавлен шаблон

<template>
  ...
            <v-card-text>
              <v-form
                ref="loginForm"
                v-model="valid"
                lazy-validation
                @submit.prevent="login()"
              >
                <v-text-field
                  v-model="loginData.email"
                  label="Email"
                  autofocus
                  clearable
                  :rules="[rules.required, rules.length]"
                  prepend-icon="mdi-account-circle"
                  @blur="resetValidation()"
                />
                <v-text-field
                  v-model="loginData.password"
                  :type="showPassword ? 'text' : 'password'"
                  label="Password"
                  :rules="[rules.required]"
                  prepend-icon="mdi-lock"
                  :append-icon="showPassword ? 'mdi-eye' : 'mdi-eye-off'"
                  @click:append="showPassword = !showPassword"
                  @blur="resetValidation()"
                />
...
...