1

webpack、vue、vuex、vue-loader などを使用しています。これがすべて正しく設定されているかどうかわかりません。

// login component .vue
<template>
  <form>
    <input type="email" name="email" placeholder="Email" v-model="logininfo.email">
    <input type="password" name="password" v-model="logininfo.password">
    <button @click.prevent="login(logininfo.email, logininfo.password)">Login</button>
  </form>
</template>

<script>
  import { login } from '../../vuex/actions'

  export default {
    data: function () {
      return {
        logininfo: {
          email: null,
          password: null
        }
      }
    },
    vuex: {
      actions: {
        login
      }
    }
  }
</script>

そして私の行動:

// vuex/actions.js
import Vue from 'vue'
import VueResource from 'vue-resource'

Vue.use(VueResource)

export const login = ({dispatch}, email, password) => {
  dispatch('LOGIN_REQUEST')
  Vue.http.post('/login', {email, password}).then((response) => {
    dispatch('LOGIN_SUCCESS')
  }, (response) => {
    dispatch('LOGIN_FAILURE')
  })
}

私が抱えている問題は、このフォームが AJAX で「送信」されているため、応答が無効になったときにフォーム入力が入力されたままになることです。そのため、アクション内から、logininfo.password = ''そのフォーム フィールドをクリアするように設定する方法が必要です。しかし、そのコンポーネントのデータに再度アクセスする方法がわかりません。たぶん私は何かを誤解しており、このデータ (logininfo) は本当に vuex ストアにあるはずですか? このデータは、バックエンドに資格情報を渡すために使用しているだけなので、メインの状態ストアに置くべきではないと感じました。そのため、データをコンポーネントにローカライズしました。

ヒント/提案はありますか?

4

1 に答える 1