WeChat公式アカウントでReactプロジェクトを実行する方法

WeChat公式アカウントでReactプロジェクトを実行する方法

注: このプロジェクトは、create-react-app と antd-mobile を組み合わせて作成された H5 であり、WeChat 公式アカウントで実行されます。

1. a タグを使用して PDF をプレビューまたはダウンロードします。書き方は、携帯電話でクリックしても反応がなく、パソコンでクリックするとウェブページがクラッシュする、というものです。

<a href='pdf または画像パス'>
  PDF または画像名</a>

理由は、ブラウザが安全でないアクセスを検出し、ブロックしたためです。したがって、エラー プロンプトに従って、2 つの新しい属性 target と rel を追加し、次のように記述します。

<a href='pdf または画像パス' target='_blank' rel="noreferrer">
  PDF または画像名</a>

パソコンでもiOSでも正常に閲覧できます。

ただし、Android ではいくつかの状況があります。

a) 携帯電話には QQ ブラウザが搭載されており、PDF を直接開くことができます。 (通常のプレビューです)

b) 携帯電話に QQ ブラウザがインストールされていないが、他のブラウザがインストールされている場合は、QQ ブラウザをダウンロードするか、他のブラウザで開くように求めるボックスが表示されます。 (これも通常のプレビューダウンロードです)

c) 携帯電話には QQ ブラウザはありませんが、他のブラウザはあります。PDF ファイルをクリックすると、読み込みバーが表示されますが、その後プレビューやプロンプトは表示されません。 (これは異常であり、WeChat によって禁止されています) a タグにダウンロード属性を追加すると、効果 b) が発生する可能性があります。

<a href='pdf または画像パス' target='_blank' rel="noreferrer" ダウンロード>
  PDF または画像名</a>

また、PDFを直接プレビューする必要がある場合は、 react-pdf-js プラグインを使用できます。欠点は、PDFファイルが少し大きい場合、読み込みと表示が非常に遅くなることです。そのため、上記の方法をお勧めします。

2. antd-mobile の長いリストの listView を使用して長いリストを読み込みます。 (モバイルデバイス上の長いリストに対する代替ソリューションを提供します)

3. プロジェクト開始当初、実行した途端に babel プラグインが不足しているというさまざまな問題が報告されました。原因を突き止めるのに 2 時間以上かかりました。webpack 設定ファイルでは、plugins にさらに 2 つのプラグインが設定されていましたが、この 2 つのプラグインはプロジェクトにインストールされておらず、必要ありませんでした。そのため、設定から削除して再度実行したところ、エラーは発生しませんでした。

4. Echartsは地図と棒グラフを描画します

a) 中国の地図を描く

v5 以降では、マップアウトラインデータは提供されません。バージョン v4.9.0 を使用する利点は、マップアウトラインデータがあり、マップ上の州名も中央揃えになることです。マップ上のフローティングレイヤーはツールチップで設定します。特に位置を追加する必要はありません。デフォルトの表示位置は柔軟です。

b) 縦棒グラフを描く

v4 バージョンには並べ替え API がありません。縦棒グラフのデータを並べ替える必要がある場合は、バックエンドの同僚と通信して、データを並べ替えて返すように依頼してください。誤解が生じた場合は、ここでソート関数を記述して対処できます。

5. useRef を使用して値をバインドし、DOM に直接バインドできる操作を実行します。

バックエンドシステムを書く場合、通常はUIコンポーネントを直接導入します。しかし、モバイル側のUIには要件があり、UIライブラリにコンポーネントを導入してスタイルを変更するのも面倒です。入力タグを例に挙げます。

UI ライブラリの Input コンポーネントは双方向バインディングを簡単に実現できますが、独自のスタイルを持っているため、入力ボックスのスタイルをデザイナーが描画したものと同じに保つのは困難です。

ネイティブ HTML タグ - 入力。スタイルをカスタマイズできますが、双方向バインディングはありません。たとえば、ログインページでは、アカウントのパスワードを入力する必要があります。js を使用してアカウントのパスワードを取得できますが、自分で多くのコードを記述する必要があります。現時点では、useRef の方が適しています。useState や useEffect と同様に、これは react のフック関数です。次のように使用します。

import { useState,useRef } from 'react'; //はじめに
const inputRef = useRef<any>(); //const [phone, setPhone] = useState(""); を定義します。
​
エクスポートデフォルトconstLogin=()=> {
  定数changePhone = () => {
    setPhone(inputRef?.current?.value)
  }
    戻る (
       /*入力タグにバインド*/
       <input value={phone} ref={inputRef} onChange={changePhone} maxLength={11} placeholder='電話番号を入力してください' />
        )
}

6. コンポーネントをパッケージするための小さなアイデア

単一責任の原則: コンポーネントは 1 つのことだけを実行する必要があります。コンポーネントが複雑になった場合は、小さなコンポーネントに分割します。

上記は、ReactプロジェクトがWeChat公式アカウントで実行される方法の詳細な内容です。WeChat公式アカウントでのReactの実行の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Amap を使用した React 実装例 (react-amap)
  • Reactの仮想DOMとdiffアルゴリズムの詳細な説明
  • ファイルのアップロードの進行状況を示す React の例
  • React で遅延読み込みを使用して最初の画面の読み込み時間を短縮する方法
  • ReactでCSSをエレガントに書く方法
  • 最も単純な ErrorBoundary コンポーネントをカプセル化して、React 例外を処理する
  • React Fiber構造の作成手順
  • React の 3 つの主要属性における Ref の使用に関する詳細な説明
  • Reactのようなフレームワークをゼロから作成する
  • React useEffect の理解と使用

<<:  MySQL準備原理の詳細な説明

>>:  Linuxはlsofコマンドを使用してファイルのオープンステータスを確認します

推薦する

HTML 内の CSS および JS リンクのバージョン番号 (キャッシュを更新)

背景検索エンジンで「.htaccess キャッシュ」というキーワードを検索すると、ウェブサイトのファ...

href をクリックした後にページがジャンプしないようにするための空のリンクの正しい書き方 # 問題

リンクを使用する必要がある場合もありますが、リンクする必要はありません。onclick イベントを処...

ウェブページコンテンツの閲覧設計手法に関する議論

<br />コンテンツ ページの記事の場合、記事が長すぎる場合やカテゴリ (ランキング)...

Docker で Selenium グリッド分散環境を構築する実用的な方法

最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...

見落とされがちなMETAタグの特殊効果(ページ遷移効果)

Web デザインで js を使用すると、多くのページ効果を実現できますが、HTML タグの META...

axios リクエストのカプセル化に基づく Vue アプリケーションのサンプルコード

目次axiosとは何ですか? Axios リクエストタイプ? Axiosはデフォルトのカスタム構成を...

MySQL 圧縮の使用シナリオとソリューション

導入圧縮トランスポート プロトコル、圧縮列ソリューション、圧縮テーブル ソリューションなど、MySQ...

JS の Promise に中止関数を追加する方法

目次概要プロミスレースメソッド約束の再パッケージ化中止コントローラAxiosプラグインにはキャンセル...

HTML 挿入画像の例 (HTML 追加画像)

HTML に画像を挿入するには、画像を表示するための HTML タグが必要です。これは、img タ...

docker+devpi を使用してローカル pypi ソースをビルドする方法

以前、開発で頻繁に pip ダウンロードを使用する必要がありました。pip ソースを国産ソースに変更...

JS 配列の重複を排除する 9 つの高度な方法 (実証済みで効果的)

序文一般的な方法はここには記載されていませんが、等しいかどうかを判断するための二重ループや、比較のた...

Vueカスタムカプセル化ボタンコンポーネント

Vueボタンコンポーネントのカスタムカプセル化コードは参考用です。具体的な内容は次のとおりです。ボタ...

Vue を使用してパブリック アカウントの Web ページを開発する方法

目次プロジェクトの背景始めるvue-cliでプロジェクトを作成するモバイル適応についてnormali...

docker デプロイメントの実装手順 lnmp-wordpress

目次1. 実験環境2. Dockerソースをインストールする3. Dockerをインストールする4....

nginx高可用性クラスタの実装プロセス

この記事は主に、nginx 高可用性クラスタの実装プロセスを紹介します。この記事のサンプルコードは非...