WeChatミニプログラムページとコンポーネント間の情報伝達と機能呼び出し

WeChatミニプログラムページとコンポーネント間の情報伝達と機能呼び出し

今回は、私自身の開発経験を踏まえて、以下の観点で関連内容を解説します。

  1. ページからコンポーネントにデータを渡す方法
  2. コンポーネントがページにデータを渡す方法
  3. ページはコンポーネント内の関数をどのように呼び出しますか?
  4. コンポーネントはページ内でどのように関数を呼び出すのでしょうか?

1. ページはどのようにしてコンポーネントにデータを渡すのでしょうか?

最も一般的で標準化された方法は、データ リスナー オブザーバーを設定することです。

​コンポーネントscがページに導入されていると仮定します

"コンポーネントの使用": {
    "sc":""
 }

ページ上のデータ リストの変更を監視するリスナーを構成するには、コンポーネントを次のようにページに記述します。

<sc
リスト="{{リスト}}"
>
</sc>

コンポーネント内のリスナーは以下のように記述します。ページ内の `list` の値が変わるたびに `observer` リスナーがトリガーされ、変更された値が出力されます。

プロパティ:
    リスト:{
      タイプ:配列、
      オブザーバー: 関数 (newVal, oldVal){
        コンソールログ(新しい値)
      }
    }
}

同様に、動的な値の送信に加えて、このメソッドは静的な値を直接渡すこともできます。つまり、オブザーバー リスナーを呼び出す必要はありません。コンポーネントでは、this.properties.* を直接使用して、プロパティの値を取得できます(* は各プロパティ値の名前を表します)。

2. コンポーネントはどのようにしてページにデータを渡すのでしょうか?

コンポーネントは、データ転送の効果を実現するためにページ データの変更を監視するリスナーを設定できるため、ページもリスナーを使用して、コンポーネントによってトリガーされた情報転送を監視することができます。

上記のコンポーネントを例に挙げて、ページに情報を送信するにはどうすればよいでしょうか。

​ ページでコンポーネントリスナーを構成する

コンポーネントリスナー(e){
    info = e.detail; とします。
 }

コンポーネントはイベントを選択し、リスナーをバインドします

<sc
bind:listener="コンポーネントリスナー"
> 
</sc>

コンポーネントからページに入力を渡すには、コンポーネント内の対応するイベントをトリガーするだけです。e.detail は渡されるデータです。

 this.triggerEvent('リスナー',{func,tid});


3. ページはコンポーネント内の関数をどのように呼び出すか

特定のロジックでトリガーする必要がある関数 handleCloseInput を含むコンポーネント comment-bottom を導入して使用するとします。

コンポーネント内の関数を使用する場合は、ページ上の DOM 操作を通じてコン​​ポーネントを選択し、コンポーネント内の関数を呼び出すことができるように、コンポーネントの一意の ID を構成する必要があります。

<コメントボトムid="コメントボトム"></コメントボトム>

ページ上のコンポーネント内の関数の呼び出しロジックは次のとおりです。

this.commentBottom = this.selectComponent("#commentBottom");
コメント下部のハンドルを閉じる入力();

4. コンポーネントはページ上の関数をどのように呼び出すのでしょうか?

ページにデータを転送する上記の方法は、実際にはページ内の関数を呼び出します。関数マッピングとしてロジックと使用法を理解することができます。

<コンポーネント バインド:componentfunc="pagefun"></コンポーネント>

トリガーを使用して componentfunc をトリガーすると、ページ内の pagefunc は bind: function マッピング関係を通じてトリガーされます。

次に、ページ スタックを介してページ内の関数を呼び出すこともできます。コンポーネントはページのスタック領域を占有しないため、コンポーネント内で getCurrentPages を使用して、対応するページのデータとメソッドを取得できます。

var allpages = getCurrentPages(); //すべてのページデータを取得します。 var nowpage = allpages[allpages.length - 1].data; //現在のページのデータを取得します。
var nowpage = allpages[allpages.length - 1]; //データとメソッドを含むページを取得します

この部分のコンテンツは私の記事の 1 つからの抜粋です。参照ファイルにアドレスを記載しておきます。

結論:

コンポーネント間のデータ転送は、コンポーネントとページ間のデータ転送とほとんど変わらず、コンポーネントをコンポーネント内にネストすることもできます。

参考文献

WeChat ミニプログラム開発スキルの概要 (I) - データ転送と保存

WeChatミニプログラムページとコンポーネント間の情報伝達と関数呼び出しに関するこの記事はこれで終わりです。WeChatミニプログラムページとコンポーネントの関連コンテンツについては、123WORDPRESS.COMで以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatアプレットのカスタムコンポーネント値転送ページとコンポーネントデータ転送操作例
  • WeChatミニプログラムページでカスタムコンポーネントを呼び出すイベントの詳細な説明
  • WeChatアプレットカスタムコンポーネントの実装方法とカスタムコンポーネントとページ間のデータ転送の問題
  • WeChatアプレットWebViewコンポーネントの相互作用、インラインh5ページ、およびWeChat支払い実装分析を実装するWebページ
  • WeChatアプレットはカスタムコンポーネントのトリガーイベントのページ監視を実装します
  • WeChatアプレットスライドページ非表示および表示コンポーネント機能実装コード
  • WeChatアプレットはカスタムコンポーネントナビゲーションを使用して現在のページを強調表示します

<<:  Linux でバックグラウンドで実行中のプログラムを表示して終了する方法

>>:  MySQL 5.7のワンクリックインストールとパスワードポリシーの変更方法

推薦する

Linux (CentOS7) で RPM を使用して MySQL 8.0.11 をインストールするチュートリアル

目次1. インストールの準備1. Linux関連情報の表示(Linuxコマンドライン操作) 2. M...

MySQLデータを復元する2つの方法

1. はじめに少し前、開発者がテスト環境や本番環境で誤った操作をし、データベースを誤って削除/更新し...

MySQLのテーブル構造を変更する際に知っておきたいメタデータロックの詳しい解説

序文MySQL を扱ったことがある人なら、テーブル メタデータ ロックの待機についてよく知っているは...

LinuxベースのApacheウェブサイトサービス構成の詳細な説明

オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...

Linux ダイナミックライブラリの生成と使用ガイドの詳細な説明

Linux での動的ライブラリ ファイルのファイル名は libxxx.so のようになります。ここで...

マークアップ言語 - リスト

標準化されたデザインソリューション - マークアップ言語とスタイルマニュアルWeb 標準ソリューショ...

UTF-8 ファイルの Unicode 署名 BOM (バイト オーダー マーク) の問題

最近、UTF8 エンコードの中国語 Zen Cart Web サイトをデバッグしているときに奇妙な現...

Win10 での MySQL 8.0.15 のインストールと設定のグラフィック チュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

MySQL の同時実行性の問題と解決策の分析

目次1. 背景2. テーブルロックによるクエリの遅延3. オンラインでテーブル構造を変更するとどのよ...

Vue.js ソースコード解析のカスタム手順の詳細な説明

序文コア機能のデフォルトの組み込みディレクティブ (v-model および v-show) に加えて...

MySQL 基本チュートリアル パート 1 MySQL5.7.18 のインストールと接続チュートリアル

この記事から、MySQL を紹介し学習するための新しい一連の記事がスタートします。なぜ MySQL ...

mysql5.7.19 winx64 インストールおよび構成方法のグラフィック チュートリアル (win10)

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

node.js の require メソッドの読み込みルールの詳細な説明

require メソッドの読み込みルールキャッシュからの読み込みを優先するコアモジュールパス形式のモ...

Docker環境を構築する簡単な方法

まず、Docker とは何かを理解しましょう。 Docker は、アプリケーションをデプロイするため...

Vue グローバル フィルターの概念、注意事項、基本的な使用方法

目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...