ホームページ  >  記事  >  ウェブフロントエンド  >  Reactでシングルトンコンポーネントを作成する手順の詳細な説明

Reactでシングルトンコンポーネントを作成する手順の詳細な説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-15 11:48:361646ブラウズ

今回はReactでシングルトンコンポーネントを作成する手順について詳しく説明します。 Reactでシングルトンコンポーネントを作成する際の注意点を実際のケースで見てみましょう。

要件の背景

最近、ユーザーに何らかの情報を通知するためにメッセージ通知ポップアップ ウィンドウをプロジェクトに追加するという要件があります。

ユーザーがメッセージを読むと、ポップアップ ウィンドウは表示されなくなります。

問題

明らかに、これには、対応するインターフェイスを提供するためにバックエンドの介入が必要です (そのため、スケーラビリティが向上します)。

開発プロセス中に、問題が発生しました。システムには複数のページがあるため、ページを切り替えるたびにバックエンド メッセージ インターフェイスをリクエストすることになります。 。一定のパフォーマンスの低下が発生します。

マルチページシステムなので、シングルトンコンポーネントを使う意味はなさそうです(シングルトンコンポーネントの書き方を学ぶ機会にはなりますが)。
そこで、ブラウザのキャッシュを使用して、ポップアップウィンドウが表示されたかどうかを記録することを考えました(もちろん、有効期限は設定する必要があります)。

シングルトンコンポーネントの書き方

1. ツール関数:

import ReactDOM from 'react-dom';
/**
 * ReactDOM 不推荐直接向 document.body mount 元素
 * 当 node 不存在时,创建一个 p
 */
function domRender(reactElem, node) {
 let p;
 if (node) {
  p = typeof node === 'string'
   ? window.document.getElementById(node)
   : node;
 } else {
  p = window.document.createElement('p');
  window.document.body.appendChild(p);
 }
 return ReactDOM.render(reactElem, p);
}

2. コンポーネントを使用する:

export class SingletonLoading extends Component {
 globalLoadingCount = 0;
 pageLoadingCount = 0;
 state = {
  show: false,
  className: '',
  isGlobal: undefined
 }
 delayTimer = null;
 start = (options = {}) => {
  // ...
 }
 stop = (options = {}) => {
  // ...
 }
 stopAll() {
  if (!this.state.show) return;
  this.globalLoadingCount = 0;
  this.pageLoadingCount = 0;
  this.setState({show: false});
 }
 get isGlobalLoading() {
  return this.state.isGlobal && this.state.show;
 }
 get noWaiting() {
  return this.noGlobalWaiting && this.pageLoadingCount < 1;
 }
 get toPageLoading() {
  return this.noGlobalWaiting && this.isGlobalLoading;
 }
 get noGlobalWaiting() {
  return this.globalLoadingCount < 1;
 }
 render() {
  return <BreakLoading {...this.state} />;
 }
}
// 使用上面的工具函数
export const loading = domRender(<SingletonLoading />);

この記事の事例を読んで、方法を習得したと思います。もっとエキサイティングな内容にご注目ください。その他の関連記事は php 中国語 Web サイトにあります。

推奨読書:

Web サイト以外のルート ディレクトリにコンパイルおよびデプロイされた Vue プロジェクトの処理方法の詳細な説明

jQuery での length と size() の使用の違いは何ですか

分析JS デザインモードでのチェーンコールの使用について

以上がReactでシングルトンコンポーネントを作成する手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。