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

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

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

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

4397閲覧

Vue.jsで画面遷移する際、ベターな値渡しの方法を知りたいです

shimeji_XX

総合スコア42

Vue.js

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/12/22 05:55

編集2021/12/23 23:20

概要

vue.jsでSPAのWebシステムを作成しています。
A画面の値をB画面に渡し表示することを考えています。
色々値渡しの方法はあるかと思いますが、どの方法が一般的であるのか教えていただきたいです。

個人的な感想

新しい画面の遷移であり、親コンポーネント子コンポーネントの関係になることに違和感があります。ですのでpops、provideでの値渡しを実装しませんでした。
現状$route.paramsを使った値渡しを実装していますが、生データをURLの後ろにつけることになってしまったので、ユーザさんに生データを見せることが気持ち悪いです。これは$route.queryでも同じ実装になると認識しています。
フロントエンドに明るくなくこのような気持ちになっているのですが、これらの方法は一般的な値渡しの方法でしょうか?より良い、一般的な方法があれば教えていただきたいです。

参考ページ

https://cloudsmith.co.jp/blog/frontend/2020/12/1656030.html
https://dk521123.hatenablog.com/entry/2021/03/02/001653

現状のコード

####app.js(ルーティング)

js

1//... 2const router = new VueRouter({ 3 mode: 'history', 4 routes: [ 5 { 6 path: '/AMenu', 7 name: 'a.menu', 8 component: AMenuComponent 9 }, 10 { 11 path: '/BMenu/:Id', 12 name: 'b.menu', 13 component: BMenuComponent, 14 props: true 15 }, 16 ]

####AMenuComponent.vue

vue

1<template> 2 <div class="container"> 3 <a class="btn-square" @click ="GoBMenu">B画面へ進む</a> 4 </div> 5</template> 6 7<script> 8 export default { 9 methods: { 10 GoBMenu(){ 11 this.$router.push({ 12 name:'b.menu', 13 params: { 14 Id: 'testId', 15 } 16 }); 17 } 18 } 19 } 20</script> 21 22<style scoped> 23 24.btn-square { 25 font-size: 200%; 26 display: inline-block; 27 width: 50%; 28 min-width: 500px; 29 max-width: 2000px; 30 padding: 10px; 31 text-decoration: none; 32 text-align: center; 33 background: #668ad8;/*ボタン色*/ 34 color: #FFF; 35 border-bottom: solid 4px #627295; 36 border-radius: 3px; 37} 38</style>

####BMenuComponent.vue

vue

1<template> 2 <div class="container"> 3 {{this.$route.params.Id}} 4 </div> 5</template> 6 7<script> 8 export default { 9 } 10</script>

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

Veu 2.6.14
vue-router

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

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

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

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

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

guest

回答1

0

ベストアンサー

どんなパラメータによるだと思います。

そのURLで同じ画面再現させたいかどうかですかね。

サンプルでページ詳細へアクセス的にページは全然問題ないと思います。

'/BMenu/:Id',

https://hoge/BMenu/1へアクセスすれば、ページ詳細みれます、ページreloadしても同じ結果です。

認証情報などユーザーに見せたく情報、urlへ入りたくない情報などはcookieなどでいい気がします。

投稿2021/12/24 08:11

heroyct

総合スコア434

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問