Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Schritte zum Erstellen einer Singleton-Komponente in React

Detaillierte Erläuterung der Schritte zum Erstellen einer Singleton-Komponente in React

php中世界最好的语言
php中世界最好的语言Original
2018-05-15 11:48:361656Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Schritte zum Erstellen einer Singleton-Komponente in React geben. Was sind die Vorsichtsmaßnahmen zum Erstellen einer Singleton-Komponente in React? sehen.

Anforderungshintergrund

Kürzlich besteht die Anforderung, dem Projekt ein Popup-Fenster für Nachrichtenbenachrichtigungen hinzuzufügen, um den Benutzer über einige Informationen zu informieren.

Nachdem der Benutzer die Nachricht gelesen hat, wird das Popup-Fenster nicht mehr angezeigt.

Problem

Offensichtlich erfordert dies den Eingriff des Backends, um entsprechende Schnittstellen bereitzustellen (so ist die Skalierbarkeit besser).

Während des Entwicklungsprozesses sind wir auf ein Problem gestoßen: Da unser System mehrseitig ist, fordern wir bei jedem Seitenwechsel die Back-End-Nachrichtenschnittstelle an. . Es gibt einen gewissen Leistungsverlust.

Da es sich um ein mehrseitiges System handelt, scheint es keinen Sinn zu machen, Singleton-Komponenten zu verwenden (aber es ist eine Gelegenheit zu lernen, wie man Singleton-Komponenten schreibt).
Also dachte ich darüber nach, den Browser-Cache zu verwenden, um aufzuzeichnen, ob das Popup-Fenster aufgetaucht ist (natürlich muss die Ablaufzeit festgelegt werden).

So schreiben Sie eine Singleton-Komponente

1. Werkzeugfunktion:

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);
}

3 Komponenten:

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 />);

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Methode zur Verarbeitung von Vue-Projekten, die im Nicht-Website-Stammverzeichnis kompiliert und bereitgestellt werden

Länge und size() in jQuery Was sind die Unterschiede in der Verwendung

Analyse der Verwendung von Kettenaufrufen im JS-Entwurfsmuster

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zum Erstellen einer Singleton-Komponente in React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn