ホームページ >ウェブフロントエンド >jsチュートリアル >Reactを使用してシングルトンコンポーネントを作成する方法

Reactを使用してシングルトンコンポーネントを作成する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-06-02 10:18:361539ブラウズ

今回は、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中国語サイトにあります!

推奨読書:

vue でフィルターを使用する方法


vue を使用して dom のクラスを決定する方法

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

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