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

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

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

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

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

Vuex

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

Q&A

0回答

889閲覧

Vuexのデータ格納が遅く、画面遷移後でも値の反映がされていない件

carulaT

総合スコア1

Vue.js

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

Router

Routerは、異なるネットワーク同士を相互に接続するための通信機器。インターネットでのデータを自動的に振り分け、一つのインターネット回線を複数のコンピュータで使用することが可能です。DHCPによりIPアドレスを自動的に割振りすることもできます。

Vuex

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

0グッド

0クリップ

投稿2021/04/09 02:37

前提・実現したいこと

Vue.jsのVuexに関して質問です。
ページAからページBへの遷移するrouter-linkをクリックした際に、ストアにクリックされた要素のidを格納して、ページBでストアに格納したidでDBを叩く処理を実装しています。

発生している問題・エラーメッセージ

しかし、以下の様な動きをした際に上手く動きません。
①ページA→ページBへ移動
②ページB→ページAへ移動し、①とはidが違う要素をクリックしてページBへ移動
③ページBでストアを見ると、idが①の時に選択したままになっている。

該当のソースコード

pageA.vue

1 //pageA.vue 2 <div 3 v-for="(course, index) in courseList" 4 :key="index" 5 @click="selectCourse(course.id)" 6 > 7 <router-link to="/pageB"> 8 <span class="left-column">{{course.place}}</span> 9 <span class="right-column">{{course.number}}</span> 10 </router-link> 11 </div> 12 13~~ 14export default { 15~~ 16 methods: { 17 selectCourse(id) { 18 // idをストアに格納 19 this.$store.commit('setId', id); 20 }, 21 } 22 } 23

pageB.vue

1 //pageB.vue 2 <div v-for="(receiver, index) in receiverList" :key="index" @click="selectReceiver(index)"> 3 <router-link to="/pageC"> 4 <p class="left-column"> {{receiver.leave}}</p> 5 <p class="right-column">{{receiver.name}}</p> 6 </router-link> 7 </div> 8~~ 9 computed : { 10 storeId() { 11 return this.$store.state.id; 12 }, 13 }, 14 created : function() { 15   // ストアID確認(手順③の時のログを見ると、①で選択したidのままになっている) 16 console.log("pageB-id") 17 console.log(this.storeId) 18 19 //ストアidでDB叩く処理 20~~ 21 22

store.js

1//store.js 2 3export default new Vuex.Store({ 4 strict: true, 5 state: { 6 // 選択したコースid 7 id: -1, 8 9 }, 10 mutations: { 11 setId(state, id) { 12 state.id = id; 13 14 //手順③の際にもidは格納されている、①のidは想定通り上書きされている。 15 console.log("storeId") 16 console.log(state.id) 17 }, 18 }, 19})

試したこと

細かくログを埋め込んで見てみました。
pageBのcreated でストアのidを見た際、pageAの格納処理がまだ終わってないということが分かりました。ただ、どのようにすれば良いのかが分からないため質問しました。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問