WeChatミニプログラムはuni-appを通じて世界中に共有されます

WeChatミニプログラムはuni-appを通じて世界中に共有されます

実際の使用では、ミニプログラムを友人や友人サークルと共有する必要があることが多く、通常は一度に 1 ページずつ設定されます。

公式サイト共有紹介: https://uniapp.dcloud.io/api/plugins/share?id=onshareappmessage

共有する必要がある各ページは個別に記述する必要があります

コピーエクスポート デフォルト {
//友達に送信 onShareAppMessage(res) {
    if (res.from === 'button'){// ページ内の共有ボタンから console.log(res.target)
    }
    戻る {
      タイトル: 「共有タイトルをカスタマイズ」
      パス: '/pages/test/test?id=123'
    }
  },
  //Momentsに共有 onShareTimeline(res) {
     戻る {
      タイトル: 「共有タイトルをカスタマイズ」
      パス: '/pages/test/test?id=123'
    }
  }
}

コードが繰り返されるだけでなく、混乱して誤ってパラメータを見逃したり、変更し忘れたりすることも非常に起こりやすくなります。

共有パラメータ設定の概要:

グローバル共有

各ページのコードの重複を減らし、グローバルに共有コードを設定します。

まず新しいディレクトリにutilsフォルダを作成し、wxShare.jsを作成します。

作成が成功したら、main.jsにwxShare.jsをインポートします。

//共有設定
'./utils/wxShare.js' から share をインポートします。
Vue.mixin(共有)

wxShare.js の紹介

dataonShareAppMessageonShareTimelineを含む基本的な js ページを作成します。

data :共有パラメータ設定:初期設定図を参照してください

onShareAppMessage : WeChat友達に共有する設定

onShareTimeline : Momentsへの共有設定

コピーエクスポート デフォルト {
    データ() {
        戻る {
            共有:
                // 転送されたタイトル(デフォルトのタイトル)
                タイトル: 'デフォルトのタイトル - 共有タイトル',
                // デフォルトは現在のページです。これは '/' で始まるフルパスである必要があります。パス: ''
                //カスタムイメージパス。ローカルファイルパス、コードパッケージファイルパス、またはネットワークイメージパスにすることができます。
                //PNG と JPG をサポートします。imageUrl が渡されない場合、デフォルトのスクリーンショットが使用されます。表示される画像のアスペクト比は5:4です
                画像URL: ''
            }
        }
    },
    // 友達に送信 onShareAppMessage(res) {
         戻る {
          タイトル: 「友達に送る」
          パス: '/pages/test/test'
        }
    },
    //Momentsに共有 onShareTimeline(res) {
         戻る {
          タイトル:「瞬間を共有」
          パス: '/pages/test/test'
        }
    }
}

これで、最も基本的なグローバル共有が完了しました。注意深い人は、データ内のパラメータが使用されていないこと、共有されている各パラメータが固定されていて動的に設定できないことに気付くかもしれません。これは、理想的なグローバル共有とは大きく異なります。

getCurrentPages()関数

getCurrentPages()関数は、現在のページ スタックのインスタンスを取得するために使用されます。このインスタンスは、スタックの順序に従った配列の形式で提供されます。最初の要素はホームページで、最後の要素は現在のページです。

注意: getCurrentPages()はページ スタックを表示するためにのみ使用されます。ページ ステータス エラーを回避するために、ページ スタックを変更しないでください。

公式サイト紹介: https://uniapp.dcloud.io/collocation/frame/window?id=getcurrentpages

onShareAppMessageを最適化して友達と共有する

コピー//友達に送信 onShareAppMessage(res) {
    // 読み込まれたページを取得する let pages = getCurrentPages(),
        // 現在のページのオブジェクトを取得します。view = pages[pages.length - 1];
    //共有ページパス this.share.path = `/${view.route}`;
    // 転送パラメータは this.share を返します。
},

ページパスを動的に取得して共有します。

現時点では明らかな問題があります。ミニプログラムのタイトルを直接取得する方法が現在ありません。

ページ共有タイトルを設定する

共有する必要がある各ページのタイトルを動的に設定することで、国を救う方法を見つけましょう

コピーエクスポート デフォルト {
    オンロード() {
        /*
            共有するページのライフサイクルで現在のページ共有タイトルを設計します。this.share は wxShare.js で定義された共有データを取得するために使用されます*/
       this.share.title = "現在のページの共有タイトル"
    },
}

エフェクト表示

ボタン友達に共有

<button open-type="share"> )

コードは上記と変わりませんが、構成パラメータ用の別の領域がある点が異なります。

コピー//友達に送信 onShareAppMessage(res) {
    // ページ内のボタンから転送 if (res.from == 'button') {
        console.log("ボタン転送 - 構成");
    } 
    // 読み込まれたページを取得する let pages = getCurrentPages(),
        // 現在のページのオブジェクトを取得します。view = pages[pages.length - 1];
    //共有ページパス this.share.path = `/${view.route}`;
    // 転送パラメータは this.share を返します。
}

onShareTimelineを最適化してMomentsに共有する

設定は基本的に友達と共有する場合と同じです。

copy//Momentsに共有 onShareTimeline(res) {
    // 読み込まれたページを取得する let pages = getCurrentPages(),
        // 現在のページのオブジェクトを取得します。view = pages[pages.length - 1];
    // console.log("読み込まれたページを取得する", pages);
    //console.log("現在のページのオブジェクト", view);
    this.share.path = `/${view.route}`;
    // 転送パラメータは this.share を返します。
}

グローバル共有の基本的な構成は上記の通りです。

動的変更ページ パスの共有には問題はありませんが、動的共有パスとパラメータの構成にはまだ問題があります。

wxShare.js コード

コピーエクスポート デフォルト {
    データ() {
        戻る {
            共有:
                // 転送されたタイトル(デフォルトのタイトル)
                タイトル: 'デフォルトのタイトル - 共有タイトル',
                // デフォルトは現在のページです。これは '/' で始まるフルパスである必要があります。パス: ''
                //カスタムイメージパス。ローカルファイルパス、コードパッケージファイルパス、またはネットワークイメージパスにすることができます。
                //PNG と JPG をサポートします。imageUrl が渡されない場合、デフォルトのスクリーンショットが使用されます。表示される画像のアスペクト比は5:4です
                画像URL: ''
            }
        }
    },
    /*
     共有するページのライフサイクルで現在のページ共有タイトルをデザインする onLoad() {
         this.share.title = "現在のページの共有タイトル"
     },
     */
    // 友達に送信 onShareAppMessage(res) {
        // ページ内のボタンから転送 if (res.from == 'button') {
            console.log("ボタン転送 - 構成");
        }
        // 読み込まれたページを取得する let pages = getCurrentPages(),
            // 現在のページのオブジェクトを取得します。view = pages[pages.length - 1];
        this.share.path = `/${view.route}`;
        
        // 転送パラメータは this.share を返します。
    },
    //Momentsに共有 onShareTimeline(res) {
        // 読み込まれたページを取得する let pages = getCurrentPages(),
            // 現在のページのオブジェクトを取得します。view = pages[pages.length - 1];
        // console.log("読み込まれたページを取得する", pages);
        console.log("現在のページのオブジェクト", view);
        this.share.path = `/${view.route}`;
        // 転送パラメータは this.share を返します。
    }
}
wxShare.js

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • uni-appを使用してWeChatアプレットの落とし穴レコードを生成する
  • uni-app WeChatアプレット認証ログイン実装手順
  • uni-app WeChatアプレットのログイン認証の実装
  • WeChat アプレットをユニアプリ プロジェクトに変換する方法の例
  • uni-app、WeChatアプレットの位置決め機能を開発

<<:  DIV、テーブル、XHTML のウェブサイト構築の違いの分析と説明

>>:  VMware を使用して PXE バッチ インストール サーバーをテストする詳細なプロセス

推薦する

VMware 仮想マシンに CentOS と Qt をインストールするチュートリアル図

VMware のインストールパッケージのインストールダウンロードアドレス: https://www....

MySQLの分離レベルとロックメカニズムの詳細な説明

目次簡単な説明: 1. 取引の4つの特徴2. 複数の同時トランザクションによって発生する問題3. ト...

Vueプロジェクトのパッケージ化の詳細な説明

目次1. 関連構成ケース1(使用ツールはvue-cil)ケース2(使用するツールはwebpack) ...

Linux は n 日前のログとサンプルコマンドを自動的に削除します

1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...

Webデザインチュートリアル(3):デザインの手順と考え方

<br />前のチュートリアル:Webデザインチュートリアル(2):模倣と盗作について。...

JavaScriptの擬似配列と配列の使い方と違い

擬似配列と配列JavaScript では、5 つのプリミティブ データ型を除き、関数を含め、その他す...

面接で聞かれる可能性のあるCSSに関する質問

この記事は、100 回書かれ、質問された CSS の質問を記念するためのものです。聞く: CSS セ...

ウェブページのコピー防止機能の実装方法(クラッキング手法付き)

ソース ファイルを右クリックすると、次のコードが見つかります。 1. CSSを使用してFirefox...

Linux 論理ボリューム管理 (LVM) の使用法の概要

ディスク領域の管理は、システム管理者にとって重要な日常的なタスクです。ディスク領域が使い果たされると...

vue $http の get および post リクエストのクロスドメイン問題を解決する

Vue $http get および post リクエストのクロスドメイン問題まずconfig/ind...

nginx のフロントエンドとバックエンドに同じドメイン名を設定する方法

この記事では、主にnginxのフロントエンドとバックエンドに同じドメイン名を設定する方法を紹介し、皆...

MySQL 5.7 解凍版のインストール、アンインストール、および文字化けしたコードの問題のグラフィック解決

1. 解凍版のインストール(1)圧縮パッケージをダウンロードし、ディスクの場所に解凍します。圧縮パッ...

Linux システムで MySQL データベースの解凍バージョンをインストールして構成する方法

1. ファイルを現在のディレクトリに解凍しますコマンド: tar -zxvf mysql....ta...

理論の普及——ユーザーエクスペリエンス

1. 概念分析 1: UE ユーザー エクスペリエンス <br />英語ではユーザー エ...

MySQL 8.0.12 のインストールと設定方法のグラフィック チュートリアル (Windows10)

この記事は、参考のためにMySQL 8.0.12のインストールグラフィックチュートリアルを記録してい...