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

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

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

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 再利用テクニック

推薦する

jsで七夕告白連打の効果を実現、jQueryで連打技術を実現

この記事では、jsとjQueryテクノロジーを使用して告白弾幕を実現する方法を紹介します。具体的な内...

MySQLトリガーの詳細な説明と簡単な例

MySQLトリガーの簡単な例文法CREATE TRIGGER <トリガー名> -- トリ...

Vueはグラフィック検証コードを実装する

この記事の例では、グラフィック検証コードを実装するためのVueの具体的なコードを参考までに共有してい...

CentOS 6.5 に MySQL 5.6 をインストールするチュートリアル

1. Linuxに対応するRPMパッケージをダウンロードする5.6 より前のバージョンhttp://...

Nginx リバース プロキシと負荷分散を実装する方法 (Linux ベース)

ここで nginx のリバース プロキシを試してみましょう。リバースプロキシ方式とは、インターネット...

Navicat を使用してリモート Linux MySQL データベースに接続するときに発生する 10061 不明エラーの詳細な説明

Navicat を使用してリモート Linux MySQL データベースに接続すると、不明なエラー ...

MySQL Innodbインデックスの原理の詳細な説明

導入振り返ってみると、4年前、私がMySQLのインデックスについて学んでいたとき、先生はインデックス...

Vueでキャッシュされたページを管理する方法

目次問題1: 破壊1. 破壊する方法2. いつ破壊するか2.1 解決策1: route.queryを...

CSS で点線の境界線のスクロール効果を実装するサンプルコード

マウスをある領域の上に置くと、その領域に点線の境界線と線のアニメーションが表示されるというクールな効...

MySQLのスリープ関数の特殊現象例の詳しい説明

序文MySQL のスリープ システム機能は、実用的な適用シナリオが少なく、通常は実験的なテストに使用...

jQueryで劇場の座席選択と予約の効果を実現

jQueryは劇場の座席選択と予約の効果を実現します。参考までに、具体的な内容は次のとおりです。効果...

WEB2.0の片手ルール

<br />前回のCSSに関する記事は、多くの人にあまり理解されませんでした。そのため、...

テキストの展開と折りたたみの効果を実現するJavaScript

リスト形式のテキストの展開と折りたたみの実装は参考までに。具体的な内容は以下のとおりです。必要: 1...

Dockerが新しいイメージをロードした後にリポジトリとタグ名が両方ともnoneになる問題を解決する

次のコマンドを使用できます: docker tag [イメージID] [名前]:[バージョン]例えば...

Tomcat の maxPostSize 設定に関する問題と注意事項

1. maxPostSize を設定する理由は何ですか? tomcat コンテナには送信データのサイ...