WeChatアプレット用ユニアプリによるグローバルシェアリング
実際には、アプレットを友人やサークルに共有する必要がある場合が多く、一般的にはページ単位で設定します。
公式の共有の紹介です。 https://uniapp.dcloud.io/api/plugins/share?id=onshareappmessage
単一ページは、より共有する必要があるページごとに別々に書く必要があります。
copyexport default {
//Send to a friend
onShareAppMessage(res) {
if (res.from === 'button') {// From the in-page share button
console.log(res.target)
}
return {
title: 'Custom share title',
path: '/pages/test/test?id=123'
}
},
//share to friends
onShareTimeline(res) {
return {
title: 'Custom share title',
path: '/pages/test/test?id=123'
}
}
}
コードが重複するだけでなく、特に混乱しやすく、誤ってパラメータを見逃したり、変更し忘れたりしがちです。
パラメータ設定の入門編を共有する。
グローバルな共有
各ページで繰り返されるコードを減らし、共有コードをグローバルに設定します。
まず、moreディレクトリのutilsフォルダの下にwxShare.jsを作成します。
mian.jsを作成後、このwxShare.jsをインポートする。
//共有設定
import share from '. /utils/wxShare.js' からインポートする。
Vue.mixin(共有)
wxShare.jsの紹介
を含むページベースjsを作成します。
data
,
onShareAppMessage
,
onShareTimeline
3つで十分です
data
:シェアパラメータ設定:冒頭の構成図を参照するとよいでしょう
onShareAppMessage
: WeChatの友達に共有する設定
onShareTimeline
: 友達にシェアする設定
copyexport default {
data() {
return {
share: {
// Title of the repost (default title)
title: 'Default title - share title',
// default is the current page, must be a full path starting with '/'
path: '',
// custom image path, can be local file path, code package file path or network image path.
//support PNG and JPG, if you don't pass imageUrl, the default screenshot will be used. The image aspect ratio is 5:4
imageUrl: ''
}
}
},
// Send to a friend
onShareAppMessage(res) {
return {
title: 'Send to a friend',
path: '/pages/test/test'
}
},
//share to friends
onShareTimeline(res) {
return {
title: 'Share to friends',
path: '/pages/test/test'
}
}
}
最も基本的なグローバル共有が完了しました。注意深い友人は、データ内のパラメータが使用されていないこと、共有された各パラメータが固定で動的に設定できないこと、理想的なグローバル共有とは大きく異なることに気がつくかもしれません
getCurrentPages()
機能
getCurrentPages()
現在のページスタックのインスタンスを取得する関数。スタックの順番で配列として与えられ、最初の要素が最初のページ、最後の要素が現在のページとなる。
ただし
getCurrentPages()
はページスタックを表示するためにのみ使用されます。ページ状態のエラーを避けるために、ページスタックを変更しないでください。
公式サイトの説明文です。 https://uniapp.dcloud.io/collocation/frame/window?id=getcurrentpages
友人と共有するためのonShareAppMessageの最適化
copy// Send to a friend
onShareAppMessage(res) {
// Get the loaded pages
let pages = getCurrentPages(),
// Get the object of the current page
view = pages[pages.length - 1];
// the path to the shared page
this.share.path = `/${view.route}`;
//Forwarding parameters
return this.share;
},
ページパスを共有する前に、動的に取得する。
現在、かなり明白な問題があります。アプレットのタイトルは、現在、直接取得する方法がないのです。
ページ共有タイトルの設定
共有する必要のある各ページに動的にタイトルを設定する、画期的な方法を発見しました。
copyexport default {
onLoad() {
/*
Design the current page share title in the life cycle of the page to be shared
this.share is to get the share data defined in wxShare.js
*/
this.share.title = "Current page share title"
}
}
エフェクトショーケース
ボタン友達に紹介する
ページ内に配置された共有ボタン(
<button open-type="share">
)
設定パラメータ用の領域が別にあることを除けば、コードは上記と変わりません。
copy// Send to a friend
onShareAppMessage(res) {
// Forward from a button within the page
if (res.from == 'button') {
console.log("Button forwarding - configuration");
}
// Get the loaded pages
let pages = getCurrentPages(),
// Get the object of the current page
view = pages[pages.length - 1];
// the path to the shared page
this.share.path = `/${view.route}`;
//Forwarding parameters
return this.share;
}
onShareTimelineを最適化し、友人に共有できるようにする。
基本的には友人への共有と全く同じ設定です
copy//share to friends
onShareTimeline(res) {
// Get the loaded pages
let pages = getCurrentPages(),
// Get the object of the current page
view = pages[pages.length - 1];
// console.log("Getting the loaded pages", pages);
// console.log("The object of the current page", view);
this.share.path = `/${view.route}`;
//Forwarding parameters
return this.share;
}
グローバルシェアは、基本的に上記のような構成になっています。
共有用のページパスを動的に変更することは問題ないのですが、動的な共有パスをパラメータで設定することに問題が残ります。
wxShare.jsのコード
copyexport default {
data() {
return {
share: {
// Title of the repost (default title)
title: 'Default title - share title',
// default is the current page, must be a full path starting with '/'
path: '',
// custom image path, can be local file path, code package file path or network image path.
//support PNG and JPG, if you don't pass imageUrl, the default screenshot will be used. The image aspect ratio is 5:4
imageUrl: ''
}
}
},
/*
Design the current page share title in the life cycle of the page to be shared
onLoad() {
this.share.title = "Current page share title"
},
*/
// Send to a friend
onShareAppMessage(res) {
// Forwarding from an in-page button
if (res.from == 'button') {
console.log("Button forwarding - configuration");
}
// Get the loaded pages
let pages = getCurrentPages(),
// Get the object of the current page
view = pages[pages.length - 1];
this.share.path = `/${view.route}`;
//forwarding parameters
return this.share;
},
//share to friends
onShareTimeline(res) {
// Get the loaded pages
let pages = getCurrentPages(),
// Get the object of the current page
view = pages[pages.length - 1];
// console.log("Get loaded pages", pages);
console.log("The object of the current page", view);
this.share.path = `/${view.route}`;
//Forwarding parameters
return this.share;
}
}
wxShare.js
以上、本記事の全内容をご紹介しましたが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層応援していただければ幸いです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
親子コンポーネント通信を解決する3つのVueスロット
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
Netflix スペースマンダイヤルのJavaScriptによる実装