WeChatミニプログラムページ間の価値転送を実装する方法の例

WeChatミニプログラムページ間の価値転送を実装する方法の例

ミニプログラムページ間で値を渡す

みなさんこんばんは。こんばんはと言うのは、これを夜に書いたからです。この文章の始まりがそれほど唐突ではないからです。ミニプログラムのページ間の値の受け渡しについては、私が使用してきた間、wx.navigateTo と非 wx.navigateTo に非常に主観的に分けてきました。wx.navigateTo にはイベント パラメータ event があるためです。現在のページから次のページにジャンプします。戻る必要がある場合は、wx.navigateTo を使用します。このイベントの機能は、次のページから返されるパラメータを受け取ることです。このような:

インデックス

wx.navigateTo({
  URL: URL、
  イベント: {
    // 指定されたイベントのリスナーを追加して、開かれたページから現在のページに送信されるデータを取得します。acceptDataFromOpenedPage: (data) => { // このメソッドはカジュアルな名前が付けられており、要件は多くありませんが、開かれたページの最初のパラメーターはメソッド名である必要があります。console.log('sour bean buns throw from next door', data)
    },
  },
  成功: 関数 (res) {
    // 開かれたページにeventChannel経由でデータを送信します // res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
  }
})

gebi.js

// 選択を確定する confirm() {
  const eventChannel = this.getOpenerEventChannel() // これは WeChat 独自のメソッドであるはずなので、そのまま使用すれば問題ありません。eventChannel.emit('acceptDataFromOpenedPage', data) // 前のページのイベントでパラメータを受け取るメソッドの名前 wx.navigateBack() // 前のページに戻る }

これら 2 つの操作により、vue2.x と同様に親子コンポーネントの値の転送が完了し、出力もまったく同じになります。

次のページに値を渡すにはどうすればいいでしょうか? store と storage が使用されていない場合は、上記の wx.navigateTo の Url または成功コールバックの後にパラメータを持つメソッドを使用できます。成功コールバックは使ったことがないのですが、調べてみると、WebWorkerを使って子スレッドに値を渡し、子スレッドがメインスレッドに値を渡すという動作と、メインスレッドと子スレッドがデータを受け取る仕組みに非常に似ている気がします。簡単に言うと「監視」(addeventlistener)だと思います(0o-_^o)
ここで言及したいのは、ジャンプするときに URL パスの前に / が付いたページが付くということです。それだけです。

wx.navigateTo({
  URL: '/pages/index/index'
})

ミニプログラムのURL値転送

ミニプログラムの URL 値の受け渡しは、通常のルーティング パラメータと同じです。どちらも疑問符 (?) とアンパサンド (&) が続きますが、基本型データ値の受け渡しと参照型データ値の受け渡しに分かれています。一般的なものは次のとおりです。

wx.navigateTo({
  URL: '/pages/index/index?page=/pages/home/home&id=0077FF'
})

はい、正しくお読みいただけました。「/pages/home/home」のような値を渡すことができます。他の特殊文字も変換されるはずですが、試していません。

アプレットのURL転送オブジェクト

オブジェクトまたは配列を渡す場合:

送信: 最初に文字列に変換してからエンコードします。

受信: 最初にデコードし、次にオブジェクトを変換します。

データ = {
	名前: '包子',
  タイプ: '牛肉の春雨'
}
wx.navigateTo({
  url: `/pages/index/index?page=/pages/home/home&params=${encodeURIComponent(JSON.stringify(data))}`
})
onLoad (オプション) {
	const {page} = オプション;
	定数パラメータ = JSON.parse(decodeURIComponent(options.params))
}

まあ、こうやって広げるだけなら何も問題ないです。

ストアを言及する

このプロジェクトでは mobx を使用しています。mobx で取得した配列データが非常に奇妙になります。解決策は不明です。 mobx には toJS() メソッドがあるので、それを使用してください。

'mobx-miniprogram' から {toJS} をインポートします。
値をtoJS(xxxx)にします

スピンジャンプ

ジャンプに関してはミニプログラムの公式サイトにとてもわかりやすく説明されているので、ここで表にしておきます。

wx.ナビゲート先ページにジャンプして戻ります。ページスタックは最大 10 層まで可能です。イベントの内部メソッドは、次のページから返されるデータを取得できます。
wx.navigate戻る前のページまたは複数のページに戻るには、getCurrentPages(私は使ったことがないので、wx.navigateBack() だけを使用します)を使用して現在のページスタックを取得します。
wx.reLaunchすべてのページを閉じて特定のページに直接ジャンプします
wx.redirectTo現在のページを閉じて、特定のページに直接ジャンプします

wx.switchTab. -0-0----> tabBar ページにジャンプし、tabBar 以外のページをすべて閉じます (公式 Web サイトの元の言葉)

EventChannel に関しては、上で述べたページ間の値の受け渡しです。emit のみ使用しました。off, on, once の残りは使ったことがないので、シナリオがないとわかりにくいので説明が難しいです。publish-subscribe モデルを使えば何か書けそうです。

2つのテーブルは明確に分かれていると思いますか? ふふふ。実は、マークダウンテーブルをうまく使っていなかったので、分けておいた方が適切だと感じています。

要約する

WeChatミニプログラムページ間の値の転送に関するこの記事はこれで終わりです。WeChatミニプログラムページ間の値の転送に関するより関連性の高いコンテンツについては、123WORDPRESS.COMで以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後も123WORDPRESS.COMを応援してください。

以下もご興味があるかもしれません:
  • WeChatアプレットページの価値転送の詳細な説明
  • WeChatアプレットでページジャンプ値転送と値取得を実装する方法の分析
  • WeChatアプレットのカスタムコンポーネント値転送ページとコンポーネントデータ転送操作例
  • WeChatアプレットで子ページから親ページに値を渡す例の詳細な説明
  • WeChatミニプログラムページにリダイレクトするときに値を転送する方法
  • WeChatアプレットの2つのページ間で値を転送する方法の分析
  • WeChatアプレットページ値転送とページ値操作例の分析
  • WeChatアプレットページジャンプ値の実装コード
  • WeChatアプレットでページジャンプと値転送を実装する方法
  • WeChatアプレットページの価値転送例の分析

<<:  IOSデータベースアップグレードデータ移行の詳細な例

>>:  Nginx リバース プロキシを使用してクロスドメイン問題を解決する方法の詳細な説明

推薦する

JS の toFixed() メソッドの丸め精度の問題の詳細な説明

目次落とし穴充填方法何の穴ですか?要約する落とし穴最近、仕事で商品の割引価格を計算すると、いつも1セ...

JavaScript プロトタイプの詳細

目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...

Dockerでmongodbデータベースを使用するための実装コード

mongoイメージを取得する sudo docker pull mongo mongodbサービスを...

MySQLにおけるrow_numberの実装プロセス

1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...

Nginx が Apache より優れている理由

Nginx は、わずか数年で Web サーバー市場の大部分を占めるようになりました。周知のとおり、N...

JavaScript で 24 以上の配列メソッドを手動で実装する

目次1. トラバーサルクラス1. 各2. 地図3. すべての4. いくつか5. フィルター6. 減ら...

CentOS6.5 でファイル共有サービス Samba を構築するチュートリアル

Samba サービス:このコンテンツはサンバサービス学習者の参考用ですケースの説明:企業の管理者は、...

MySQL 8.0.17 をインストールしてリモート アクセスを構成する方法

1. インストール前の準備データベースのバージョンを確認するコマンド: mysql --versio...

ウェブサイトにファビコンを追加するためのヒント: URLの前の小さなアイコン

いわゆるファビコンは、Favorites Icon の略で、中国語ではウェブサイトアバターと呼ばれて...

js、css、htmlはブラウザのさまざまなバージョンを決定します

正規表現を使用してIEブラウザのバージョンを判別するIEブラウザかどうか確認するif (docume...

MySQL CHARとVARCHARの保存と読み取りの違い

導入保存時と読み取り時に CHAR 型と VARCHAR 型の違いを本当にご存知ですか?まずいくつか...

Nginx メモリプールのソースコード分析

目次メモリプールの概要1. nginxデータ構造2. nginxはOSからスペースngx_creat...

Navicatは機能ソリューション共有を作成できません

初めて MySQL FUNCTION を書いたとき、エラーが何度も発生しました。 Err] 1064...

React+TS を使用したシンプルな Jira プロジェクトを実装するためのベスト プラクティス

トレーニングのための一連のプロジェクト反応+ts内容は少ないですが、フックのカプセル化、ts ジェネ...

vscode dockerプラグインのdocker.socket権限問題を解決する

解決策: システム内のすべての .vscode 関連プロセスを終了します (または、remote-s...