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

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

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

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

Nuxt.js

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

Q&A

解決済

1回答

717閲覧

nuxt.js ページ遷移時のstoreの値の変更について

okpk

総合スコア38

Vue.js

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

Nuxt.js

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

0グッド

0クリップ

投稿2019/04/11 03:35

編集2019/04/11 03:40

routerOptionPlugin

1export default async ({ app,store }) => { 2 app.router.afterEach((to, from) => { 3 let page_name; 4 page_name = to.name; 5 6 switch(page_name){ 7 case "privacy" : 8 console.log("privacy page"); 9 store.dispatch("changeSingleState", true); 10 break; 11 12 case "agreement" : 13 console.log("agreement page。"); 14 store.dispatch("changeSingleState", true); 15 break; 16 17 case "index" : 18 console.log("index page。"); 19 store.dispatch("changeSingleState", false); 20 break; 21 } 22 }); 23 };

store

1export const state = () =>({ 2 isActive: false, 3 isWhite: false, 4 isSinglePage: false 5}) 6 7export const mutations = { 8 setActiveState(state,value){ 9 state.isActive = value 10 }, 11 changeHeaderWhite(state,value){ 12 state.isWhite = value 13 }, 14 setSingleState(state,value){ 15 state.isSinglePage = value 16 console.log(state.isSinglePage, '~~~~~~~') 17 } 18} 19export const actions = { 20 changeSingleState({commit},value){ 21 console.log(value,"aaaaaaaaaaaaa"); 22 commit("setSingleState",value) 23 }, 24 changeActive({commit},value){ 25 commit("setActiveState",value) 26 } 27}

html

1<a href="../#feature" v-if="singlePageState"> 2 <img src="/assets/img/navi.png" alt=""> 3</a> 4<nuxt-link v-scroll-to="'#feature'" to="#feature" v-if="!singlePageState"> 5 <img src="/assets/img/navi.png" alt=""> 6</nuxt-link>

singlePageStateはtrueかfalseをstoreで管理しており、aタグかnuxt-linkを使うかの切り分けをv-ifで書いております。
問題は、
topから下層ページに遷移した時と、下層ページに直アクセスした際で、trueなのにfalseの部分が表示されたり、falseなのにtrueの条件部分が表示されたりします。
storeの値はconsoleで見ると問題なくtrueとfalse切り替わっているのですが、これはなぜでしょうか。

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

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

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

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

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

FeLvi_zzz

2019/04/15 14:56

storeのisSinglePageはHTML内のsinglePageStateにどのように代入しているのでしょうか?
okpk

2019/04/16 01:12

返信ありがとうございます。 data、computed、mountedそれぞれの書き方で singlePageState = this.$store.state.isSinglePage という感じで代入し試しましたが、結果は全て変わりませんでした。 また、v-ifに直接storeのstateを書いても初期表示と別ページからの遷移時でtrueとfalseの挙動がうまく動きませんでした。 v-if条件分岐に入る前に{{singlePageState}}の形式でtrueが表示されているのに、falseの<nuxt-link>の分岐に入るような感じです。。
guest

回答1

0

自己解決

厳密にタイミングが取れてないということで一旦解決にします。

投稿2019/07/27 16:00

okpk

総合スコア38

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問