Vuex上にAPIが存在し、サーバー側から取得した値を、Vueコンポーネントに送りたいのですが、方法がわかりません。どのようにしたら良いのでしょうか。
javascript
1import Vue from 'vue' 2import Vuex from 'vuex' 3import module1 from '@/store/modules/module1.js' 4import createPersistedState from 'vuex-persistedstate' 5 6Vue.use(Vuex) 7 8export default new Vuex.Store({ 9 state: { 10 }, 11 mutations: { 12 }, 13 actions: { 14 }, 15 modules: { 16 module1, 17 }, 18 plugins: [createPersistedState({ 19 key: 'test', 20 storage: window.sessionStorage 21 })] 22})
javascript
1import axios from "axios"; 2export default { 3 namespaced: true, 4 state: { 5 }, 6 mutations: { 7 }, 8 actions: { 9 validate(context, params) { 10 axios 11 .post('http://example.com/api/XXXX', params, 12 { 13 headers: { 14 "Content-Type": "application/json", 15 }, 16 }) 17 .then((response) => { 18 }).catch((error) => { 19 if (error.response.data && error.response.data.errors) { 20 // ここでエラーメッセージをVueコンポーネントに送信したい 21 this.$emit("errors", error.response.data.errors); 22 } 23 }) 24 } 25 } 26}
javascript
1<template> 2 <div> 3 <div>{{ errors }}</div> <!-- エラーメッセージを表示 --> 4 <input type="text" name="data1" v-model="data1" /> 5 <input type="text" name="data2" v-model="data2" /> 6 <button @click="validate()">バリデーション</button> 7 </div> 8</template> 9 10<script lang="ts"> 11import { Component, Vue } from "vue-property-decorator"; 12@Component 13export default class Form extends Vue { 14 private data1 = ""; 15 private data2 = ""; 16 17 validate() { 18 this.$store.dispatch("validate", { 19 data1: this.data1, 20 data2: this.data2 21 }); 22 } 23} 24</script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/12/13 12:48