ミニプログラムカスタムタブバーコンポーネントのカプセル化

ミニプログラムカスタムタブバーコンポーネントのカプセル化

この記事の例では、ミニプログラムのカスタムタブバーコンポーネントをカプセル化するための具体的なコードを参考のために共有しています。具体的な内容は次のとおりです。

1. 新しいコンポーネントを作成する: コンポーネントの下にタブバーを作成する

2. コンポーネントの index.wxml 構造は次のとおりです。

<カバービュークラス="タブバー">
 <カバービュークラス="タブバーボーダー"></カバービュー>
 <カバービュー wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="tabChange">
  <カバーイメージ src="{{tabbarIndex === インデックス ? item.selectedIconPath : item.iconPath}}"></カバーイメージ>
  <カバービュー スタイル="color: {{tabbarIndex === index ? selectedColor : color}}">{{item.text}}</カバービュー>
 </カバービュー>
</カバービュー>

3. コンポーネントの index.wxss 構造は次のとおりです。

.タブバー{
  位置: 固定;
  下部: 0;
  左: 0;
  右: 0;
  高さ: 60px;
  背景: 白;
  ディスプレイ: フレックス;
  パディング下部: env(セーフエリアインセット下部);
}

.タブバーの境界線 {
  背景色: rgba(0, 0, 0, 0.33);
  位置: 絶対;
  左: 0;
  上: 0;
  幅: 100%;
  高さ: 1px;
  変換: スケールY(0.5);
}

.タブバー項目 {
  フレックス: 1;
  テキスト配置: 中央;
  ディスプレイ: フレックス;
  コンテンツの中央揃え: 中央;
  アイテムの位置を中央揃えにします。
  flex-direction: 列;
}

.タブバーアイテムカバー画像{
  幅: 28px;
  高さ: 28px;
  下マージン: 2px;
}

.tab-bar-item カバービュー {
  フォントサイズ: 10px;
}

4. コンポーネントの index.js 構造は次のとおりです。

// ページ/コンポーネント/タブバー/index.js
成分({
  /**
 1. コンポーネントプロパティのリスト*/
  オプション:
    multipleSlots: true // コンポーネントを定義するときにオプションで複数のスロットのサポートを有効にする},
  プロパティ:
    リスト: {
      タイプ: 配列、
      価値: []
    },
    選択された色:{
      タイプ: 文字列、
      価値:''
    },
    色:{
      タイプ: 文字列、
      価値:''
    },
  },

  /**
 2. コンポーネントの初期データ*/
  データ: {
    tabbarIndex: 0 //デフォルトでは最初のタブ要素が表示されます},

  生涯:
    添付() {}
  },

  /**
 3. コンポーネントメソッドリスト*/
  メソッド: {
    //コンポーネントクリックイベントtabChange(e) {
      // 下部バー要素のインデックスを取得します。let index = e.currentTarget.dataset.index;
      this.setData({
        タブバーインデックス:インデックス、
      })
      //triggerEvent はコンポーネントのイベントを取得します //onMyEvent ページから渡されたクリックイベント名 this.triggerEvent('onMyEvent',{
        タブバーインデックス:インデックス、
      })
    },
  }
})

5. コンポーネントの index.json 構造は次のとおりです。

{
  「コンポーネント」:true、
  "コンポーネントの使用": {}
}

6. ページ内のコンポーネントの使用
7. ページの JSON コードは次のとおりです。

{
  "navigationBarTitleText": "テスト",
  "コンポーネントの使用": {
    "mp-tabbar": "../components/tabBar/index"
  }
}

8. ページの wxml コードは次のとおりです。

//タブ1が選択されたときにページに表示されるコンテンツ <view wx:if="{{tabbarIndex == 0}}">111111</view>
//タブ2が選択されたときにページに表示されるコンテンツ <view wx:if="{{tabbarIndex == 1}}">222222</view>
//タブ3が選択されたときにページに表示されるコンテンツ <view wx:if="{{tabbarIndex == 2}}">333333</view>
<mp-tabbar list="{{list}}" id='tabComponent' bind:onMyEvent="tabChange"></mp-tabbar>

9. ページの js コードは次のとおりです。

ページ({
  データ: {
    tabbarIndex:0, // デフォルトの最初のタブ要素の色: "#555555",
    選択された色: "#2ea7e0",
    //ボトムバーリスト: [{
        "テキスト": "市場",
        "アイコンパス": "/images/bazaar.png",
        "選択されたアイコンパス": "/images/bazaar_selected.png",
      },
      {
        "text": "再充電",
        "アイコンパス": "/images/recharge.png",
        "selectedIconPath": "/images/recharge_selected.png",
      }, {
        "text": "艦隊",
        "アイコンパス": "/images/market.png",
        "選択されたアイコンパス": "/images/market_selected.png",
      }
    ]
  },
  /**
   * ライフサイクル機能 - モニターページ表示 */
  onShow: 関数() {
    this.tabComponent = this.selectComponent('#tabComponent');
    selectedColor を this.data.selectedColor とします。
    color = this.data.color とします。
    this.tabComponent.setData({
      選択された色: 選択された色、
      色:色
   })
   コンソールログ(this.tabComponent.data.tabbarIndex)
  },
  //コンポーネントから渡されたデータを取得する tabChange:function(e){
    index = e.detail.tabbarIndex とします。
    this.setData({
      タブバーインデックス:インデックス
    })
    コンソールログ(e.detail.tabbarIndex)
  }
})

最終的な効果は図に示されています。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatミニプログラム(パート3)タブバー下部ナビゲーションの詳細な紹介
  • タブ(ウィンドウ上部のタブバー)ページ切り替えを実現するWeChatアプレット開発
  • WeChatアプレット開発:タブバーの例の詳細な説明
  • WeChatアプレットは新しいログインページを作成し、タブバーを非表示にします
  • WeChat ミニプログラム公式ダイナミックカスタムボトムタブバーの例
  • uni-app での WeChat アプレットのカスタム タブバーの適応の詳細な説明
  • WeChatアプレット開発におけるタブバーアイコンと色の実装
  • WeChatアプレット開発タブ(ウィンドウ下部のタブバー)ページ切り替え
  • WeChatアプレットタブバーの使用例の詳細な説明
  • WeChatアプレットカスタムタブバーコンポーネントの開発の詳細な説明

<<:  Dockerがsudo操作を使用する必要がある問題を解決する

>>:  HTML 再利用テクニック

推薦する

JavaScript でオブジェクトをトラバースする 5 つの方法 サンプルコード

目次準備する5つの武器…のためにオブジェクト.キーオブジェクト.getOwnPropertyName...

テキストの両側に水平線を描くための CSS のサンプルコード

この記事では、テキスト中央の両側に水平線を引く効果を実現する CSS のサンプルコードを紹介し、皆さ...

iframe テクニックを使用して訪問者 QQ 実装のアイデアとサンプル コードを取得する

今日、仕事中に、一時的に追加した友人から、Web ページを使用して訪問者の QQ を取得する方法を尋...

vuex データの永続化のための 2 つの実装ソリューション

目次ビジネス要件:解決策 1: vuex-persistedstate解決策2: vuex-pers...

Vue+ElementUI Treeの使い方

Vue+ElementUI Treeの使い方は参考までに。具体的な内容は以下のとおりです。 フロント...

写真とテキストによる MySQL と sqlyog のインストール チュートリアル

1. MySQL 1.1 MySQLのインストールmysql-5.5.27-winx64 ダウンロー...

自作の Windows サーバーに egg アプリケーションを展開する方法 (画像とテキスト付き)

1. IEブラウザを使用してVPNにログインする 2. リモートログイン 3. サーバーに最新のn...

MySQLデータベースの基礎知識と操作のまとめ

この記事では、例を使用して、MySQL データベースの基本的な知識と操作について説明します。ご参考ま...

Bootstrap5 ブレークポイントとコンテナの具体的な使用法

目次1. Bootstrap5 ブレークポイント1.1 モバイルファースト1.2 ブートストラップブ...

mysqldump を使用して MySQL データをバックアップする方法

1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...

CentOS7.x のアンインストールとインストール MySQL5.7 の操作手順とエンコード形式の変更方法

1. MySQL 5.7 のアンインストール1.1查看yum是否安裝過mysql CD yum li...

MySQL列挙型のテスト例

プロジェクトを開発しているとき、支払い済み、支払済み、クローズ済み、返金済みなどの注文ステータスなど...

Windows7 での Mysql5.7 my.ini ファイルの読み込みパスとデータの場所の変更方法

更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...

Vue3 親子コンポーネントパラメータ転送における sync 修飾子の使用法の詳細な説明

目次一方向データフローの説明Vue2.x の使用法親コンポーネントに変更を通知するイベントのフォーム...

Vueでaxiosをカプセル化する方法

目次1. インストール1. はじめに3. インターフェースルートアドレス4. 使用例4.1 ダウンロ...