Vue でのルーティングパラメータの受け渡しとクロスコンポーネントパラメータの受け渡しの詳細な説明

Vue でのルーティングパラメータの受け渡しとクロスコンポーネントパラメータの受け渡しの詳細な説明

ルートジャンプ

this.$router.push('/course');
this.$router.push({name: コース});
$router.go(-1);
$router.go(1);
<router-link to="/course">コースページ</router-link>
<router-link :to="{name: 'course'}">コースページ</router-link>

ルーティングパラメータ

方法1

ルータ

this.$router.push('/course');
this.$router.push({name: コース});
$router.go(-1);
$router.go(1);
<router-link to="/course">コースページ</router-link>
<router-link :to="{name: 'course'}">コースページ</router-link>

ジャンプ.vue

<テンプレート>
 <!-- タグジャンプ -->
 <router-link :to="`/course/${course.id}/detail`">{{ course.name }}</router-link>
</テンプレート>
<スクリプト>
 // ...
 詳細() {
 //ロジックジャンプ this.$router.push(`/course/${this.course.id}/detail`);
 }
</スクリプト>

受信.vue

作成された() {
 id = this.$route.params.id とします。
}

ルーティング パスに :id のようなルート マッチを記述する場合 (「:」はバックエンド マッチに相当し、「id」は名前付きグループの名前に相当します)。

方法2

ルータ

作成された() {
 id = this.$route.params.id とします。
}

ジャンプ.vue

<テンプレート>
 <!-- タグジャンプ -->
 <ルーターリンク:to="{
   名前: 'コース詳細',
   クエリ: {id: course.id}
  }">{{ コース名 }}</ ルーターリンク>
</テンプレート>
<スクリプト>
 // ...
 詳細() {
  //ロジックジャンプ this.$router.push({
   名前: 'コース詳細',
   クエリ: {
    id: this.course.id
   }
  });
 }
</スクリプト>

受信.vue

<テンプレート>
 <!-- タグジャンプ -->
 <ルーターリンク:to="{
   名前: 'コース詳細',
   クエリ: {id: course.id}
  }">{{ コース名 }}</ルーターリンク>
</テンプレート>
<スクリプト>
 // ...
 詳細() {
  //ロジックジャンプ this.$router.push({
   名前: 'コース詳細',
   クエリ: {
    id: this.course.id
   }
  });
 }
</スクリプト>

コンポーネント間でパラメータを渡す4つの方法

// 1) localStorage: データを永続的に保存する
// 2) sessionStorage: データの一時保存 (ページを更新してもデータはリセットされず、タブを閉じて再度開くとリセットされます)
// 3) Cookie: データの一時的または永続的な保存(有効期限によって決定)
// 4) vuex ウェアハウス (store.js): 一時保存データ (ページ更新データリセット)

vuex 倉庫プラグイン

store.js 構成ファイル

デフォルトの新しいVuex.Storeをエクスポートします({
 州: {
  タイトル: 「デフォルト値」
 },
 突然変異:
  // ミューテーションは、状態の属性に対するセッターメソッドを提供します // セッターメソッドの名前は任意ですが、パラメータリストは 2 つに固定されています: state、newValue
  setTitle(状態、新しい値) {
   state.title = 新しい値;
  }
 },
 アクション: {}
})

任意のコンポーネントのリポジトリ変数に値を割り当てる

this.$store.state.title = 'newTitle' // 最初のタイプ this.$store.commit('setTitle', 'newTitle') // 2番目のタイプ

2 つ目は、ミューテーションで提供されるセッター メソッドです。このメソッドは最終的に状態に値を渡しますが、このセッター メソッドに検証やその他の判断を記述することができます。

任意のコンポーネントの倉庫変数の値を取得する

console.log(this.$store.state.title)

vue-cookie プラグイン

インストール

console.log(this.$store.state.title)

main.js 構成

// 最初のタイプ import cookies from 'vue-cookies' // プラグインをインポート Vue.use(cookies); // プラグインをロード new Vue({
 // ...
 cookies, //プラグインプロトタイプ$cookiesを使用して設定
}).$mount('#app');

// 2 番目のタイプ import cookies from 'vue-cookies' // プラグインをインポート Vue.prototype.$cookies = cookies; // プラグインのプロトタイプ $cookies を直接設定

使用

// 追加(変更):キー、値、exp(有効期限)
// 1 = '1s' | '1m' | '1h' | '1d'
this.$cookies.set('token', token, '1y');

// チェック: キー
this.token = this.$cookies.get('token');

// 削除: キー
this.$cookies.remove('トークン');

注: Cookie は通常、トークンを保存するために使用されます。

// 1) トークンとは何か: セキュリティ認証のための文字列
// 2) 誰が生成したか: バックグラウンドで生成された
// 3) 誰が保存するか: バックグラウンド ストレージ (セッション テーブル、ファイル、メモリ キャッシュ)、フロントエンド ストレージ (Cookie)
// 4) 使用方法: サーバーはフロントデスクへのフィードバックを生成し (ログイン認証プロセス)、フロントデスクはそれをバックデスクに送信して認証を完了します (ログイン後のリクエスト)
// 5) フロントエンドとバックエンドの分離プロジェクト: バックエンドがトークンを生成し、フロントエンドに返す => フロントエンドがそれを独自に保存し、トークンを使用してリクエストを送信する => バックエンドがトークンの検証を完了する => バックエンドがログインしたユーザーを取得する

(前述のように、コンポーネント間のパラメータ受け渡しはクッキーを使っても実現できます。クッキーにはデフォルト値が設定されていないため、空の値であればビュー関数で取得する値も空になります。そのため、ビュー関数でもデフォルト値を設定し、クッキーで渡された値を判定する必要があります。空の値でない場合はデフォルト値をそれに置き換えてからレンダリングします)

axios プラグイン

インストール

>: cnpm をインストール axios

main.js 構成

import axios from 'axios' // プラグインをインポート Vue.prototype.$axios = axios; // プラグインプロトタイプ $axios を直接設定

使用

this.axios({
 url: 'リクエストインターフェース',
 メソッド: 'get|post request',
 データ: {郵送などで提出されたデータ},
 パラメータ: {送信されたデータを取得}
}).then(成功したリクエストのコールバック関数).catch(失敗したリクエストのコールバック関数)

場合

// リクエストを取得する this.$axios({
 URL: 'http://127.0.0.1:8000/test/ajax/',
 メソッド: 'get'、
 パラメータ: {
  ユーザー名: this.username
 }
}).then(関数 (応答) {
 console.log(応答)
}).catch(関数(エラー) {
 コンソール.log(エラー)
});

// リクエストを投稿する this.$axios({
 URL: 'http://127.0.0.1:8000/test/ajax/',
 メソッド: 'post'、
 データ: {
  ユーザー名: this.username
 }
}).then(関数 (応答) {
 console.log(応答)
}).catch(関数(エラー) {
 コンソール.log(エラー)
});

クロスドメインの問題(同一オリジンポリシー)

// バックエンドはフォアグラウンドからのリクエストを受け取り、フォアグラウンドデータとリクエスト情報を受け取ることができます。 要求された情報が自身のサーバーからのリクエストではないことがわかり、データへの応答を拒否します。 この状況はクロスドメイン問題と呼ばれます (同一生成元ポリシー CORS)

// クロスドメイン エラーの原因は 3 つあります // 1) ポートの不一致 // 2) IP の不一致 // 3) プロトコルの不一致 // Django で解決する方法 - django-cors-headers モジュール // 1) インストール: pip3 install django-cors-headers
// 2) 登録:
インストール済みアプリ = [
 ...
 「コースヘッダー」
]
// 3) ミドルウェアをセットアップする:
ミドルウェア = ​​[
 ...
 'corsheaders.middleware.CorsMiddleware'
]
// 4) クロスドメインを設定する:
CORS_ORIGIN_ALLOW_ALL = 真

要素UIプラグイン

インストール

>: cnpm i 要素UI -S

main.js 構成

'element-ui' から ElementUI をインポートします。
'element-ui/lib/theme-chalk/index.css' をインポートします。
Vue.js の ElementUI 要素をオーバーライドします。

使用

公式サイトによると https://element.eleme.cn/#/zh-CN/component/installation api

要約する

Vue のルートパラメータの受け渡しとクロスコンポーネントパラメータの受け渡しに関するこの記事はこれで終わりです。Vue ルーティングとクロスコンポーネントパラメータの受け渡しに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue の動的ルーティング構成とルーティングパラメータの受け渡し方法
  • Vueルーティングジャンプパラメータメソッド
  • Vueルーティングページでリフレッシュパラメータが失われる問題の解決策
  • Vueルーティングパラメータ伝送の3つの基本モード
  • vue-routerルーティングでパラメータを渡す方法についての簡単な説明
  • Vueルーティングパラメータ受け渡しの基本的な実装方法のまとめ【3つの方法】
  • vue-router2.0 コンポーネント間でパラメータを渡し、動的パラメータを取得する方法
  • 親コンポーネントと子コンポーネント間の Vue.js パラメータ転送の例

<<:  win2008 サーバー セキュリティ設定の展開ドキュメント (推奨)

>>:  CentOS 7 で RPM パッケージを使用して MySQL 5.7.9 をインストールするチュートリアル

推薦する

Linux ユーザー グループと権限の概要

ユーザーグループLinux では、すべてのユーザーはグループに属する必要があり、Linux には次の...

binlog2sql と簡単なバックアップおよびリカバリを使用して mysql8.0.20 を構成するための詳細な手順

目次最初のステップのインストールステップ2: MySQLデータを準備する3 番目のステップは、bin...

TypeScript におけるインターフェースと型メソッドの正しい使用例

目次序文インタフェースタイプ付録: インターフェースとタイプの違い要約する序文インターフェースとタイ...

VueはElementUIのフォームサンプルコードを模倣する

実装要件ElementUI を模倣したフォームは、インデックス コンポーネント、Form フォーム ...

MySQL は重複データを削除して最小の ID ソリューションを維持します

オンラインで検索して重複データを削除し、ID が最小のデータだけを残します。方法は次のとおりです。 ...

Vueタイマーの詳細な使い方

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

JavaScript 正規表現の説明

目次1. 正規表現の作成2. 使用モード2.1 シンプルモードの使用2.2 特殊文字の使用3. 応用...

JavaScriptを使って動的にテーブルを生成するケースの詳しい説明

目次序文実装のアイデア実装コード成果を達成する序文これは、テーブルを動的に追加する例です。[追加] ...

MySQLにおける区切り文字の定義と機能の詳細な説明

MySQL を初めて学ぶときは、区切り文字の本当の目的を理解していないかもしれません。区切り文字は、...

CSS コード省略 div+css レイアウト コード省略仕様

略語を使用すると、CSS ファイルのサイズが小さくなり、読みやすくなります。 CSS 省略形の主なル...

HTML フォームタグチュートリアル (2):

このチュートリアルでは、ウェブデザインにおけるFORMフォームタグのさまざまな属性の応用を紹介します...

Ubuntu 18.04 のログインループ/ブートインターフェイスで停止/グラフィカルインターフェイスに入ることができない問題を解決する方法

原因: NVIDIA グラフィック カード ドライバーが破損している解決:コマンドラインモードで再起...

dockerコンテナにviコマンドをインストールする簡単な操作

docker コンテナを使用する場合、vim がインストールされていないことがあり、vim コマンド...

JS と Nodejs におけるイベント駆動型開発についての簡単な説明

目次イベント駆動型とパブリッシュ・サブスクライブ型ブラウザの JavaScript ではイベント駆動...

Vue.jsの機能コンポーネントに関する包括的な理解

目次序文React 関数コンポーネントVue (2.x) の機能コンポーネント🌰 例: el-tab...