Vue カプセル化 TabBar コンポーネントの完全なステップ記録

Vue カプセル化 TabBar コンポーネントの完全なステップ記録

実装のアイデア:

ステップ 1: TabBar と TabBarItem のコンポーネント カプセル化

この時点で、ページの基本的なレイアウトは実装されていますが、アイテムのクリックのアクティブ状態は実装されていないことがわかります。

ステップ2: アクティブな画像をTabBarItemに渡す

置き換えられたコンテンツがスロット全体を直接置き換えて、スロットに定義されたスタイルも置き換えられるのを防ぐには、スロットの外側にdivラッパーを定義するのが最適です。

ステップ3: TabBarItemとルーティングの組み合わせ

ステップ4: TabBarItemのカラーコントロール

基本的には完了していますが、ルート内のクリックパスを繰り返し実行するとエラーが発生することがわかりました

エラーの原因:

これは、vue-router ≥ 3.0 のコールバック形式が promise に変更されたためです。エラーがキャッチされない場合は、このようなエラー警告がコンソールに表示されます。

解決策1: vue-routerをバージョン3.0にダウングレードする

[email protected] を npm で実行します -S 

解決策2:

メソッドを呼び出すたびに catch を追加する必要がないように、ルーター プロトタイプ チェーンの push メソッドと replace メソッドを書き直します。

main.js に次の内容を記述します。

'vue-router' から Router をインポートします。
 
const originalPush = Router.prototype.push
Router.prototype.push = 関数push(location, onResolve, onReject) {
  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
  元のPush.call(this, location).catch(err => err) を返します
}

プッシュの変更がまだ有効にならない場合は、次の例のように、置換メソッドを試してください。

Router.prototype.replace をオーバーライドします。
Router.prototype.replace = 関数 replace(location) {
  originalReplace.call(this, location).catch(err => err) を返します。
};

フォントアイコンで実装

フォントアイコンの紹介

使用

要約する

これで、TabBar コンポーネントの vue カプセル化に関するこの記事は終了です。TabBar コンポーネントの vue カプセル化に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはタブルーティング切り替えコンポーネントのメソッド例を実装します
  • Vue.js モバイルタブコンポーネントのカプセル化実践例
  • Vueコンポーネントタブバーの使い方の詳細な説明
  • Vueはコンポーネントルーティングジャンプメソッドを使用してタブバーコンポーネントをカプセル化します

<<:  HTML テーブル境界制御実装コード

>>:  4つの柔軟なScssコンパイル出力スタイル

推薦する

CSS を使用して波状のウォーターボール効果を実装するためのサンプルコード

今日は新しいCSS特殊効果、波型ウォーターボール効果を学びました。これもとても美しいです HTML:...

ドロップダウンメニューを実現するためのHTML+CSS

1. ドロップダウンリストの例コードは次のとおりです。 <!doctypehtml> ...

反応ループデータの実装(リスト)

まず、バックグラウンドから来るデータをシミュレートしてみましょう。ここでは、コードをわかりやすくする...

Ajax は CORS レスポンス ヘッダーを設定してクロスドメインの問題を解決し、クロスドメインのケース スタディを実現します。

1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...

vueはel-tableの列幅の適応を完璧に実現します

目次背景技術的ソリューション具体的な実装要約する背景Element UI は、PC で人気の Vue...

Linuxファイル削除後にスペースが解放されない問題の詳しい説明

序文システム領域の使用量が大きすぎて消去する必要がある場合、または特定のファイルを消去する必要がある...

Linux プロセス管理ツール スーパーバイザーのインストールと設定のチュートリアル

環境: CentOS 7公式ドキュメント: http://supervisord.org/インストー...

MySQLデータベースでコマンドを自動補完する3つの方法

注意: 3 番目の方法は XSell でのみ使用され、finalsell では使用できません。方法1...

Vueでルーティング権限を動的に設定する主なアイデア

以前、インターネット上で動的ルーティング設定をいくつか見たことがありましたが、現在のプロジェクトとは...

Windows 10 での MySQL 5.7.21 winx64 のインストールと設定方法のグラフィック チュートリアル

mysql 5.7.21 winx64 のインストールと設定方法: MySQLのコミュニティバージョ...

MySql5.x を MySql8.x にアップグレードする方法と手順

MySQL 5.x と MySQL 8.0.X のいくつかの違いapplication.proper...

mysql5.7.33 で誤って ibdata ファイルを削除した後にデータを回復する方法

目次1. シナリオの説明: 2. 事例のデモンストレーション: 2.1. MySQLの障害発生前にデ...

WeChatアプレットを少なく使う方法(最適な方法)

序文私は less/sass を書くことに慣れていますが、小さなプログラムを開発するときには、まだ ...

WeChatアプレットにおけるデータ保存実装方法

目次グローバル変数 globalDataページプライベート変数データストレージ非同期ストレージ(デバ...

Node.js を使用してパスワード ジェネレータを作成するための完全な手順

目次1. 準備2. コマンドラインの記述2.1 バージョンと説明を追加する2.2 パスワードの長さを...