質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

Q&A

解決済

1回答

3301閲覧

nuxt.js vuexのstore で axiosからAPI の取得ができません

e_nasu

総合スコア11

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

0グッド

0クリップ

投稿2020/06/09 13:14

編集2020/06/12 00:57

別の問題があり、内容を切り分けるために 既に動いている部分の簡易版を別プロジェクトに移植したのですが、store/index.js に記載した axios で API が取得できなくなってしまいました。actionsの発火コードが必要ですか?

  • APIの発行に問題はないと思います。 pages/ に配置した別コード ( 以下(<4>に記載 ) で取得できます。

  • 設定ファイルnuxt.config.js は下に記載しました。移植元のものと差異はないと思います。

  • 現状でエラーは出力されていません。recordnull となっています。(vue.js Devtools のvuex から)

  • ブレークポイントを 以下<5>に設置しましたが、async 以下には止まりません。(移植元は 止まります)

  • 再度プロジェクトを作成し直しましたが状況は同じです。

  • package.json 内の各々のversionも一致しています。

  • actions内のコードをgetRecordasyncDatafetch をに代えてみましたが状況に変わりありません。

<1> store/index.js は以下です。

export const state = () => ({ record: null }) export const mutations = { setRecord (state, res) { state.record = res } } export const actions = { async getRecord ({ commit }) { const res = await this.$axios.$get('http://127.0.0.1:5000/api/record') commit('setRecord', res) } }

 ---
<2> 設定ファイルは以下で 動いているものと変わりないと思います。

// nuxt.config.js export default { mode: 'universal', ~省略~ ** Nuxt.js modules */ modules: [ // Doc: https://axios.nuxtjs.org/usage '@nuxtjs/axios', ], /* ** Axios module configuration ** See https://axios.nuxtjs.org/options */ axios: { }, 省略 }

<3> (package.json)

"dependencies": { "@nuxtjs/axios": "^5.3.6", },

<4> 念のため、pages配下に以下のコードを置いてAPIが出力できているか確認してみましたが、問題なく取得できます。
(pages/record.vue)

<template> <section> <p>{{ record }}</p> </section> </template> <script> export default { async asyncData ({ $axios, error }) { try { const response = await $axios.$get('http://127.0.0.1:5000/api/record') return { record: response } } catch (err) { error({ statusCode: err.resoponse.status, message: err.response.data.message }) } } } </script>

<5> breakpoint 設定

//抜粋です 下に全文を載せています export const actions async getRecord const res = commit('setRecord',res) error({

<6> プロジェクトの作成方法

  • $ yarn create nuxt-app で作成しています。

  • その際の選択内容は以下です。

create-nuxt-app v2.15.0 ✨ Generating Nuxt.js project in store-sample ? Project name store-sample ? Project description My praiseworthy Nuxt.js project ? Author name ? Choose programming language JavaScript ? Choose the package manager Yarn ? Choose UI framework Buefy ? Choose custom server framework None (Recommended) ? Choose Nuxt.js modules Axios ? Choose linting tools ESLint ? Choose test framework Jest ? Choose rendering mode Universal (SSR) ? Choose development tools jsconfig.json (Recommended for VS Code), Semantic Pul l Requests

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akbr

2020/06/12 02:18

<5> breakpoint 設定のコードが何か…記入中・・・?でしょうか? あと、actionsのgetRecordを呼び出している箇所はどこでしょうか? 呼び出さないと実行されないと思いますが。
e_nasu

2020/06/12 05:10

ご指摘 ありがとうございます。 <5> はブレークポイントを設定した場所を示したつもりでしたが分かりにくかったですね。 また、呼び出し箇所がないとの指摘ありがとうございます。pages/inspire.vue(呼び出しファイル)から`async fetch` で vuexのstoreを更新できました。
guest

回答1

0

自己解決

こちらを参考に
pages/配下のファイルからfetch を使って呼び出すことで可能になりました。

ご指摘ありがとうございます。

<追記>
動いているコードでは index.vue上で
mounted() {this,getRecord()} していました。お恥ずかしい。

投稿2020/06/12 05:15

編集2020/06/12 05:49
e_nasu

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問