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 コマンドラインのクイックヒント: ファイルの検索方法

推薦する

SQL文のANDとORの実行順序で発生する問題

質問昨日、データベースSQLを書いているときに問題が発生しました。問題の根本は、SQL ステートメン...

jsネイティブウォーターフォールフロープラグイン制作

この記事では、jsネイティブウォーターフォールフロープラグインの具体的なコードを参考までに共有します...

Mybatis マッパー動的プロキシの原理の分析

序文動的プロキシの原理を説明する前に、まず、mybatis を統合した後の dao 層の 2 つの実...

Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

簡単に言うと、今日は Gitlab-CI を使用してリモート サーバーに自動的にデプロイする方法につ...

clearfixとclearの例

この記事では、CSS を理解し始めたばかりの人を対象に、主に HTML で clearfix と c...

タイプファイルの入力ボタン機能の研究

<br />一部のWebサイトでアップロードする場合、「参照」ボタンをクリックすると[フ...

JavaScript を使用してタイムラインとアニメーション効果を実装するためのサンプル コード (フロントエンドのコンポーネント化)

目次コードのクリーニングJavaScript の「フレーム」 「フレーム」の実装方法1. 間隔を設定...

JS における ES6 継承と ES5 継承の違い

目次継承ES5 プロトタイプ継承ES6 クラス継承両者の違いES5プロトタイプ継承の内部実装ES6 ...

画像をハイパーリンクとして使用したときに表示される青いボックスを削除する方法

最近、Dreamweaver を使用して製品プレゼンテーションを作成し、画像にハイパーリンクを追加し...

CSS の高度な使い方(実戦で活用)

1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...

MySQL 8.0 redo ログの詳細な分析

目次序文REDOログの生成REDOログ送信REDOログの保存と通知ユーザースレッドに通知要約する序文...

CSS3 で Taobao に空白スペースを実装する方法

Taobao用の空白スペースを作成します。 ブラウザページを縮小すると、コンテンツ領域は縮小されませ...

オンライン MYSQL 同期エラーのトラブルシューティング方法の概要 (必読)

序文フェイルオーバーが発生した後、よくある問題は同期エラーです。データベースが小さい場合は、ダンプし...

Linux で MySQL パスワードを忘れた場合の解決策

問題は次のとおりです。mysql -uroot -p コマンドを入力しましたが、パスワードを忘れてし...