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

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

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

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

Nuxt.js

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

Vuex

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1745閲覧

Nuxt.jsでのpagesからlayoutsへのデータの受け渡しについて

aa316316

総合スコア39

Vue.js

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

Nuxt.js

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

Vuex

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/02/03 02:32

こんにちは、
タイトルの通りですが、現在以下の実装を実現しようとしていて方法を探しています。
具体的なコード等はまだないのですが、実現方法でアドバイスいただけたら大変助かります。

前提・実現したいこと

pages/index.vueでcurrentRouteを取得し、index.vueで適用しているlayoutsの中のcomponentに渡したいと思っています。
まだvueに関して深く理解ができていないのですが、index.vueでvuexのstoreにデータ(currentRoute)を入れ、componentで呼び出すという手法が一般的なのでしょうか?
また、他に方法等ありましたらアドバイスいただけますでしょうか?

初歩的な質問で申し訳ないのですが、ご回答いただけますと幸いです。

試したこと

index.vueからlayoutを介さないcomponentへのデータの受け渡しは以下の方法で確認できました。

  1. index.vue, componentでslotを設定。
  2. index.vueのslotのデータ属性としてcurrentRouteの値を収納。
  3. componentでgetElementByIdでエレメントを取得し、取得した値にdataset.xxxでdata(currentRoute)を取得

ただ、上記の方法はlayoutを介するしていない上、回りくどいやり方をしていると思います。
改善の方法等ありますでしょうか?

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

"nuxt": "^2.4.2"
"vue": "^3.2.1"

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

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

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

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

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

guest

回答1

0

ベストアンサー

別々のコンポーネントで共通のデータを参照する場合は、storeを用いるのが一般的と思います。

VueやReactなど、仮想DOMを利用したフレームワークでは、実際のDOMのレンダリングはフレームワークにコントロールされるため、getElementByIdを使ってレンダリングされたDOMからデータを取得するのは、再現しづらいバグを生む可能性もあるのでお勧めできません。

具体的なコードができましたら、掲示していただけると回答を得やすいと思います。

投稿2019/02/04 12:06

noka_blank

総合スコア252

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

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

aa316316

2019/02/06 08:08

> noka_blankさん ご回答ありがとうございます! やはり、storeを使うのが一般的なのですね。とても分かりやすい説明ありがとうございます! vuexを使う方向で、もしコードができましたら追加させていただきます。 ありがとうございます!
noka_blank

2019/02/06 09:36

自分の環境はReactですが、直近で実DOMを変更して痛い目を見ましたので、、、^^; ぜひ色々な方の意見を集めてご判断いただければと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問