Heim Web-Frontend js-Tutorial So implementieren Sie Eingabeaufforderungen vor der Deinstallation der React-Komponente, dem Routensprung und dem Schließen der Seite (Aktualisierung)

So implementieren Sie Eingabeaufforderungen vor der Deinstallation der React-Komponente, dem Routensprung und dem Schließen der Seite (Aktualisierung)

Jan 17, 2019 am 09:45 AM
dom html5 javascript react-router react.js

Der Inhalt dieses Artikels befasst sich mit den Implementierungsmethoden der React-Komponenten-Deinstallation, dem Routing-Sprung und den Eingabeaufforderungen vor dem Schließen der Seite (erfrischend). Ich hoffe, dass er hilfreich ist Du hast geholfen.

Der Lebenszyklus der React-Komponente, der Routing-Sprung und das Schließen der Seite sehen etwas ähnlich aus. Beispielsweise ist die aktuelle Komponente im Begriff, aus dem Ansichtsfenster zu verschwinden, aber tatsächlich sind die ausgelösten Ereignisse nicht dieselben . Beginnen wir mit einem praktischen Fall:

Ein Benutzer auf der Artikelbearbeitungsseite einer Single-Page-Anwendung bearbeitet einen Artikel, hat ihn aber noch nicht gespeichert.

Wenn der Benutzer versehentlich zu einer anderen Route springt, muss er daran erinnert werden, ob er mit dem Springen fortfahren soll.

Und der Benutzer klickt versehentlich auf die Schaltfläche zum Schließen der Registerkarte , oder die Seite aktualisiert. Dieser Prozess löst das Ereignis zum Entladen der Seite aus.

In diesem Fall müssen wir Folgendes implementieren:

1. Ein Eingabeaufforderungsfeld wird angezeigt, wenn der Benutzer zur Seite springt (Routing übernimmt den Verlaufsmodus)

2. Ein Eingabeaufforderungsfeld erscheint, wenn der Benutzer die Seite schließt

componentWillUnmount

Zuallererst ist diese Hook-Funktion eine Funktion, die vor der Komponente aufgerufen wird wird deinstalliert. Dies verhindert nicht, dass die aktuelle Komponente deinstalliert wird. Versuchen Sie also nicht, hier eine Eingabeaufforderung zu erstellen, denn selbst wenn eine Eingabeaufforderung erfolgt, wird die Komponente dennoch deinstalliert und der Artikel verschwindet.

Route Guard-<Prompt/>

Um die erste Funktion zu implementieren, ist eine Beurteilung erforderlich, bevor zur Route gesprungen wird. Der vorherige Routenwächter wurde nach react-router-dom 4.0 abgebrochen (eigentlich habe ich die vorherige Version nicht studiert, diese Beschreibung stammt aus dem Internet). Nach react-router-dom 4.0 können Sie sich auf die Komponente <Prompt/> verlassen, um diese Funktion zu implementieren. Dokumentlink↗

Fügen Sie diese Komponente zu einem beliebigen Teil Ihrer Artikelbearbeitungsseitenkomponente hinzu

import {Prompt} from 'react-router-dom';
const Editor=()=>{
    return (
        <div>
          <Prompt
            when={true}
            message={location => '文章要保存吼,确定离开吗?'}
          />
        </div>
    )
}
Nach dem Login kopieren

Hier ist zu beachten, dass Ihre Route bei Verwendung von <Prompt/> springt. Es muss sein kann über implementiert werden und kann nicht auf dem Tag basieren.
Wenn Sie auf „Abbrechen“ klicken, bleiben Sie auf der aktuellen Seite. Bisher wurde die Funktion implementiert, den Benutzer bei Routing-Sprüngen an das Speichern zu erinnern.

Fensterschließereignis vor dem Entladen

Um die zweite Funktion zu implementieren, müssen Sie sich auf die Überwachung des Fensters verlassen. Die Anwendung von Fensterereignissen in React-Anwendungen ist weitaus seltener als die von DOM-Ereignissen, daher ist sie mir schon lange nicht mehr begegnet und sie ist immer noch etwas ungewohnt. Das Wichtigste ist: Wann sollte eine Überwachung durchgeführt werden?

Sollte auf Ereignisse warten, wenn die Komponente gemountet ist, und die Ereignisüberwachung entfernen, wenn die Komponente nicht gemountet ist. Da ich begonnen habe, die neuen Funktionen von Hooks vollständig zu übernehmen, wird hier useEffect verwendet.

import React,{useEffect} from 'react';

const Editor=()=>{

 //监听窗口事件
    useEffect(() => {
        const listener = ev => {
            ev.preventDefault();
            ev.returnValue='文章要保存吼,确定离开吗?';
        };
        window.addEventListener('beforeunload', listener);
        return () => {
            window.removeEventListener('beforeunload', listener)
        }
    }, []);
    
//return ...
}
Nach dem Login kopieren

Hier gibt es ein paar Dinge zu beachten:

1 Der zweite Parameter von useEffect ist ein leeres Array, was bedeutet, dass nur zwei Hooks, ComponentDidMount und ComponentWillUnmount, aufgerufen werden

2, der zweite Parameter der Ereignisüberwachung und -entfernung ist die gleiche Ereignisverarbeitungsfunktion

3. Bestätigung, Eingabeaufforderung und Warnung im Beforeunload-Ereignis werden ignoriert. Stattdessen gibt es ein integriertes Browser-Dialogfeld. (Referenz:

MDN|beforeunload)

4. Es muss ein Rückgabewert vorhanden sein und es handelt sich um eine nicht leere Zeichenfolge. In einigen Browsern wird dieser Wert jedoch nicht als Popup verwendet Nachricht

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Eingabeaufforderungen vor der Deinstallation der React-Komponente, dem Routensprung und dem Schließen der Seite (Aktualisierung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles