Vue router-viewとrouter-linkの実装原理

Vue router-viewとrouter-linkの実装原理

使用

<div id="アプリ">
  <router-link to='home'>ホーム</router-link>
  <router-link to='about'>について</router-link>
  <ルータービュー a=1><ルータービュー/>
 </div>

ルータービューコンポーネント

エクスポートデフォルト{
// 機能コンポーネントにはこれがなく、新規作成できず、双方向データ バインディングもありません。通常、機能コンポーネントはそれほど頻繁には使用されず、詳細ページは表示のみで変更や他の操作は実行されないため、詳細ページの表示に適しています。機能コンポーネントは、ステートフル コンポーネントよりも軽量です。
  機能:true、
  レンダリング(h,{親,データ}){
  親は親コンポーネントアプリを表します
  data はインライン属性 (上記のコードでは a=1) であり、prop let route = parent.$route; を使用して渡すこともできます。
    深さを 0 にします。
    ルータービューを true に設定します。
    while(親){ 
    //$vnodeは仮想DOMを参照します。アプリに仮想DOMがあり、この仮想DOMのrouterViewがtrueの場合
      親.$vnode && 親.$vnode.data.routerView の場合{
        深さ++; 
      }
      親 = 親.$parent;
    }
    レコードをルート.matched[depth]とします。
    if(!記録){
      h() を返します。
    }
    h(record.component, data) を返します。
  }
}

ルータリンクの実装

エクスポートデフォルト{
  小道具:{
    に:{
      タイプ:文字列、
      必須:true
    },
    タグ:{
      タイプ:文字列
    }
  },
  レンダリング(h){
    tag = this.tag || 'a' とします。
    ハンドラを = ()=>{
      this.$router.push(this.to);
    }
    <tag onClick={handler}>{this.$slots.default}</tag> を返します。
  }
}

Vue router-view と router-link の実装原理に関するこの記事はこれで終わりです。Vue router-view と router-link に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue router-view のネストされた表示実装
  • vue update router-viewの再利用コンポーネントの内容が更新されない問題を解決する
  • vue で router-view コンポーネントを使用するチュートリアル
  • Vue2はrouter-viewのデフォルトパスを設定します
  • Vueは、同じページに複数のルータービューを配置する方法を実装しています。
  • vue2.0 ルーティングでルータービューが表示されない問題の解決方法
  • vue-router で router-view がレンダリングされない問題の解決方法
  • vue ルーティング ビュー router-view のネストされたジャンプの実装

<<:  Python MySQL データベース テーブルの変更とクエリ

>>:  Linux コマンドラインのクイックヒント: ファイルの検索方法

推薦する

CSS3はブラウザのスクロールバーのスタイルを変更します

注意: この方法は、Webkit ベースのブラウザにのみ適用されます。ブラウザのスクロールバーが広す...

ウェブサイトをより高く、よりデザイン的に見せる方法

「ウェブサイトを高級感のあるものにするにはどうすればいいでしょうか? それともデザイン重視にすればい...

MySQL パーティション テーブルの基本入門チュートリアル

序文最近のプロジェクトでは、大量のデータを保存する必要があり、このデータには有効期限があります。クエ...

React 構成 px 変換 rem メソッド

関連する依存関係をインストールするnpm i lib-flexible --save npm i p...

Dockerを使用してAngularプロジェクトをデプロイする方法

Docker を使用して Angular プロジェクトをデプロイする方法は 2 つあります。1 つは...

デザイン参考 WordPressウェブサイト構築成功事例

これら 16 のサイトはそれぞれ注意深く読む価値があり、どのサイトでも推奨されている Web サイト...

Baota LinuxパネルにFTP接続できない問題の解決方法の詳細な説明

Alibaba Cloud Server を使用している場合は、セキュリティ グループ設定でポート ...

MySQL ベストプラクティス: パーティションテーブルの基本タイプ

MySQL パーティションテーブルの概要MySQL の人気が高まるにつれて、MySQL に保存される...

jQueryはマウスドラッグ画像機能を実装します

この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...

高品質なJavaScriptコードの書き方

目次1. 読みやすいコード1. 統一コード形式2. マジックナンバーを削除する3. 単一機能原則2....

Linux プロセスの CPU 使用率が 700% に達し、終了できない場合の解決策

目次1. 問題の発見2. プロセスの詳細情報を表示する3. 解決策4. 大法を再開する1. 問題の発...

上位Nを見つけるためのMySQLグループソートの詳細な説明

MySQLグループソートで上位Nを見つけるテーブル構造grp でグループ化し、num で並べ替えて、...

WeChatアプレットでQRコードを識別するために長押しする実装プロセス

序文公式アカウントのQRコードは長押しで認識できることは皆さんご存じですが、ミニプログラムに対する制...

mysql8.0.11 winx64 のインストールと設定方法のグラフィック チュートリアル (win10)

mysql 8.0.11 winx64のインストールチュートリアルは以下のように記録され、みんなと...

VMWare を使用して Windows 上で Linux 環境を構築する手順 (画像とテキスト)

Mac を返却して以来、元のラップトップは使用されていません。このラップトップの構成は非常に良好で...