WeChatアプレットでの複数ページパラメータ通信の実装
私は WeChat ミニ プログラムを初めて使用するため、構文と 属性 についてよく知りません。次の記事では主に WeChat の複数のページ間のパラメーター通信に関する関連情報を紹介します。ミニプログラム。私が最近勉強した内容をまとめたものです。必要な方は以下を参照してください。
はじめに
WeChat ミニ プログラムはますます人気が高まっており、多くの企業がネイティブ コードを WeChat ミニ プログラム コードに変換しています。開発プロセス中、WeChat アプレットの wx.navigateBack
メソッドはパラメータを返すことをサポートしていないため、一部のページ、特にリスト ページから詳細ページにジャンプすると、ユーザーが ステータス wx.navigateBack
方法并不支持返回传参,导致一些页面,尤其是从列表页面跳入详情页,用户在详情页改变了状态,返回后无论是否刷新页面,体验都不是很好。在android中,我们一般采用setresult
方法来返回参数,或者直接使用rxjava框架或者eventbus框架来解决此类问题。
业务分析
此类需求大概意思是:A页面进入B页面,B页面返回并传值给A。
探索之路
刚开始我想采用一个比较偷懒的方法,利用微信的wx.setStorage
缓存在B页面存储,返回A页面,在onshow
方法里调用wx.getStorage
读取缓存来实现此功能。但是想想解决方式过于投机取巧,也会给日后维护带来大量隐患。
随后我在网上找到获取前一个page
的方法,也可以实现此功能,部分代码如下:
var pages = getCurrentPages(); var currPage = pages[pages.length - 1]; //当前页面 var prevPage = pages[pages.length - 2]; //上一个页面 //直接调用上一个页面的setData()方法,把数据存到上一个页面中去 prevPage.setData({ mdata:1 })
仔细想了下,代码也不是很安全,因为进B页面的入口可能是多个,这样会导致获取的page出错。
本来是没招了,突然想到微信小程序支持js,然后就找了个轻量级的js库,而且是观察者模式,是我想要的类型。于是,好戏开始了
onfire.js介绍
onfire.js 是一个很简单的事件分发的Javascript库(仅仅 0.9kb),简洁实用。
可以用于:
简单的事件分发;
在 react / vue.js / angular 用于跨组件的轻量级实现;
事件订阅和发布;
实践
整理下思路如下:
A页面先订阅一个事件,并定义处理方法。
B页面返回时发送消息。
A页面卸载时,解除订阅。
A页面代码:
var onfire = require("../utils/onfire.js"); var that; var eventObj = onfire.on('key', function () { //做具体的事 }); Page({ data: { }, onLoad: function(options) { // Do some initialize when page load. }, onReady: function() { // Do something when page ready. }, onUnload: function (e) { onfire.un('key'); onfire.un(eventObj2); } })
直接调用onfire.on
方法订阅一个名字为key的消息,并且无传参。如果需要传参的话,直接在function
里增加参数即可,如var eventObj = onfire.on('key', function (data)...
。
需要注意:一定要在onUnload
里取消订阅key
的消息,并取消绑定eventObj
。
B页面里代码在回调的地方加入
onfire.fire('key');//key为上文中订阅的消息 //有参数时 onfire.fire('key','test');
分析库代码
function _bind(eventName, callback, is_one, context) { if (typeof eventName !== string_str || typeof callback !== function_str) { throw new Error('args: '+string_str+', '+function_str+''); } if (! hasOwnKey(onfireEvents, eventName)) { onfireEvents[eventName] = {}; } onfireEvents[eventName][++cnt] = [callback, is_one, context]; return [eventName, cnt]; }
从代码中可以看出订阅on
方法的时候实际调用_bind
方法,该方法,主要是利用一个二维数组来存储订阅的对象。
function _fire_func(eventName, args) { if (hasOwnKey(onfireEvents, eventName)) { _each(onfireEvents[eventName], function(key, item) { item[0].apply(item[2], args); //执行订阅时的方法 if (item[1]) delete onfireEvents[eventName][key]; // 当类型为只订阅一次时,通知后即移除自己。 }); } }
而fire
发送消息方法实质调用_fire_func
方法,通过名字key
来遍历订阅者,然后通知订阅者。
function un(event) { var eventName, key, r = false, type = typeof event; if (type === string_str) { // 如果存在key值,则移除数组 if (hasOwnKey(onfireEvents, event)) { delete onfireEvents[event]; return true; } return false; } else if (type === 'object') { eventName = event[0]; key = event[1]; //如果找到这个对象则卸载 if (hasOwnKey(onfireEvents, eventName) && hasOwnKey(onfireEvents[eventName], key)) { delete onfireEvents[eventName][key]; return true; } //否则返回false return false; } else if (type === function_str) { //两层循环来判断是否是方法名 _each(onfireEvents, function(key_1, item_1) { _each(item_1, function(key_2, item_2) { if (item_2[0] === event) { delete onfireEvents[key_1][key_2]; r = true; } }); }); return r; } return true; }
因为卸载支持按key
に戻った後にページを更新しても、エクスペリエンスはあまり良くありません。 android
setresult
メソッドを使用してパラメータを返すか、直接パラメータを返します。このような問題を解決するには、rxjavaフレームワークまたは Eventbus フレームワークを使用します。 ビジネス分析
🎜🎜🎜🎜このタイプの要求は、おそらく次のことを意味します: ページ A がページ B に入り、ページ B が戻り、値 🎜 を A に渡します。 🎜🎜🎜🎜探求への道🎜🎜🎜🎜🎜最初は、遅延メソッドを採用し、WeChat のwx.setStorage
キャッシュ 🎜 はページ B に保存されています。ページ A に戻り、onshow
で wx.getStorage
を呼び出します。 > メソッド 読み取りキャッシュを使用して、この機能を実装します。ただし、その解決策があまりにもご都合主義的である場合、将来のメンテナンスに多くの隠れた危険をもたらすことになります。 🎜その後、インターネット上で前の page
を取得する方法を見つけました。これでもこの機能を実現できます。コードの一部は次のとおりです。 🎜rrreee🎜 よく考えてみると、このコードはそうではありません。非常に安全🎜。ページ B への入り口が複数ある可能性があり、取得したページでエラーが発生する可能性があるためです。 🎜🎜途方に暮れていましたが、突然、WeChat アプレットが JS をサポートしていると思い、軽量の JS ライブラリを見つけました。オブザーバー パターン🎜 は、私が望むタイプです。さあ、楽しい時間が始まります🎜🎜🎜🎜onfire.js の紹介🎜🎜🎜🎜🎜onfire.js は非常にシンプルな Event🎜 配布された JavaScript🎜 ライブラリ (わずか 0.9kb)、シンプルで実用的。 🎜🎜🎜🎜 は次の用途に使用できます。 🎜🎜🎜- 🎜react🎜 / vue.js / コンポーネント間での軽量実装のための angular; 🎜
- 🎜イベントのサブスクリプションと公開 ;🎜🎜
- 🎜最初にページはイベントをサブスクライブし、そして処理方法を定義します。 🎜
- 🎜B ページが戻ったらメッセージ 🎜 を送信します。 🎜
- 🎜 ページ A がアンインストールされたら購読を解除します。 🎜🎜
onfire.on
メソッドを直接呼び出して key という名前のメッセージをサブスクライブします。パラメーターは渡されません。パラメーターを渡す必要がある場合は、vareventObj = onfire.on('key', function (data)...
など、function
にパラメーターを直接追加します。 🎜 🎜🎜注: 🎜🎜必ず onUnload
で key
メッセージのサブスクライブを解除し、eventObj
のバインドを解除してください。 B ページのコードは、実際に _bind
メソッドが呼び出されるときに、主に 2 次元配列 🎜 サブスクライブされたオブジェクト 🎜 を保存します。 🎜rrreee🎜 そして、メッセージを送信するための fire
メソッド。基本的に _fire_func
メソッドを呼び出し、key
という名前でサブスクライバーを走査し、サブスクライバーに通知します。 🎜rrreee🎜アンインストールでは、キー
、オブジェクト、アンインストール方法の押下がサポートされているため、最初にタイプを決定し、それぞれのルールに従ってバインドを解除する必要があります🎜🎜🎜🎜概要🎜🎜🎜。以上がWeChatアプレットでの複数ページパラメータ通信の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Xianyu の公式 WeChat ミニ プログラムが静かに開始されました。ミニ プログラムでは、プライベート メッセージを投稿して購入者/販売者とコミュニケーションしたり、個人情報や注文を表示したり、商品を検索したりすることができます。プログラム、見てみましょう。 Xianyu WeChat アプレットの名前は何ですか? 回答: Xianyu、アイドル取引、中古品販売、評価、リサイクル。 1. ミニ プログラムでは、アイドル メッセージの投稿、プライベート メッセージを介した購入者/販売者とのコミュニケーション、個人情報と注文の表示、指定された商品の検索などができます。 2. ミニ プログラム ページには、ホームページ、近くに、アイドル投稿、メッセージ投稿、私の投稿 5つの機能; 3. 使用したい場合は、購入する前に WeChat 支払いを有効にする必要があります。

WeChat アプレットが画像アップロード機能を実装 モバイル インターネットの発展に伴い、WeChat アプレットは人々の生活に欠かせないものになりました。 WeChat ミニ プログラムは、豊富なアプリケーション シナリオを提供するだけでなく、画像アップロード機能などの開発者定義の機能もサポートします。この記事では、WeChat アプレットに画像アップロード機能を実装する方法と具体的なコード例を紹介します。 1. 準備作業 コードを書き始める前に、WeChat 開発者ツールをダウンロードしてインストールし、WeChat 開発者として登録する必要があります。同時に、WeChat についても理解する必要があります。

WeChat ミニ プログラムでの画像フィルター効果の実装 ソーシャル メディア アプリケーションの人気に伴い、人々は写真にフィルター効果を適用して、写真の芸術的効果や魅力を高めることがますます好まれています。画像フィルター効果は WeChat ミニ プログラムにも実装でき、より興味深く創造的な写真編集機能をユーザーに提供します。この記事では、WeChat ミニ プログラムに画像フィルター効果を実装する方法を紹介し、具体的なコード例を示します。まず、WeChat アプレットのキャンバス コンポーネントを使用して画像を読み込み、編集する必要があります。 Canvasコンポーネントはページ上で使用できます

WeChat ミニ プログラムでドロップダウン メニュー効果を実装するには、特定のコード サンプルが必要です。モバイル インターネットの普及に伴い、WeChat ミニ プログラムはインターネット開発の重要な部分となり、ますます多くの人が注目し始めています。 WeChat ミニ プログラムを使用します。 WeChat ミニ プログラムの開発は、従来の APP 開発よりも簡単かつ迅速ですが、特定の開発スキルを習得する必要もあります。 WeChat ミニ プログラムの開発では、ドロップダウン メニューが一般的な UI コンポーネントであり、より良いユーザー エクスペリエンスを実現します。この記事では、WeChat アプレットにドロップダウン メニュー効果を実装し、実用的な機能を提供する方法を詳しく紹介します。

WeChat アプレットを使用してカルーセル スイッチング効果を実現する WeChat アプレットは、シンプルで効率的な開発と使用特性を備えた軽量のアプリケーションです。 WeChat ミニ プログラムでは、カルーセル スイッチング効果を実現することが一般的な要件です。この記事では、WeChat アプレットを使用してカルーセル切り替え効果を実現する方法と、具体的なコード例を紹介します。まず、カルーセル コンポーネントを WeChat アプレットのページ ファイルに追加します。たとえば、<swiper> タグを使用すると、カルーセルの切り替え効果を実現できます。このコンポーネントでは、 b を渡すことができます。

Xianyu の公式 WeChat ミニ プログラムが静かに開始され、アイドルアイテムを簡単に公開および交換できる便利なプラットフォームをユーザーに提供します。ミニ プログラムでは、プライベート メッセージを介して購入者または販売者とコミュニケーションしたり、個人情報や注文を表示したり、欲しい商品を検索したりできます。では、WeChat ミニ プログラムでは Xianyu とはいったい何と呼ばれているのでしょうか? このチュートリアル ガイドで詳しくご紹介しますので、知りたいユーザーは、この記事に従って読み続けてください。 Xianyu WeChat アプレットの名前は何ですか? 回答: Xianyu、アイドル取引、中古品販売、評価、リサイクル。 1. ミニ プログラムでは、アイドル メッセージの投稿、プライベート メッセージを介した購入者/販売者とのコミュニケーション、個人情報と注文の表示、指定された商品の検索などができます。 2. ミニ プログラム ページには、ホームページ、近くに、アイドル投稿、メッセージ投稿、マイ投稿の5つの機能、3.

PHPを使用してWeChatアプレットの中古取引機能を開発するにはどうすればよいですか?人気のモバイル アプリケーション開発プラットフォームとして、WeChat アプレットはますます多くの開発者によって使用されています。 WeChat ミニ プログラムでは、中古取引が一般的な機能要件です。この記事では、PHP を使用して WeChat アプレットの中古取引機能を開発する方法と、具体的なコード例を紹介します。 1. 準備作業 開発を開始する前に、以下の条件が満たされていることを確認する必要があります。ミニ プログラムの AppID の登録やミニ プログラムのバックグラウンドでの設定など、WeChat ミニ プログラムの開発環境がセットアップされていること。

WeChat ミニ プログラムで画像回転効果を実装するには、特定のコード サンプルが必要です。WeChat ミニ プログラムは、ユーザーに豊富な機能と優れたユーザー エクスペリエンスを提供する軽量のアプリケーションです。ミニ プログラムでは、開発者はさまざまなコンポーネントと API を使用して、さまざまな効果を実現できます。その中で、画像回転効果は、ミニプログラムに興味と視覚効果を加えることができる一般的なアニメーション効果です。 WeChat ミニ プログラムで画像の回転効果を実現するには、ミニ プログラムが提供するアニメーション API を使用する必要があります。以下は、その方法を示す具体的なコード例です。
