Home Web Front-end JS Tutorial How to implement prompts before React component uninstallation, route jump, and page closing (refresh)

How to implement prompts before React component uninstallation, route jump, and page closing (refresh)

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

The content this article brings to you is about the implementation method of React component uninstallation, route jump and prompt before page closing (refresh). It has certain reference value. Friends in need can refer to it. I hope it will help You helped.

The React component unloading life cycle, routing jump and page closing look somewhat similar. For example, the current component is about to disappear from the viewport, but in fact the events triggered are not the same. same. Let's start with a practical case:

The user on the article editing page of a single-page application is editing an article, which has not yet been saved.

When the user accidentally jumps to another route, the user needs to be reminded whether to continue jumping. This process needs to trigger the route jump and component uninstallation;

And the user accidentally clicks the close tab button , or refreshed the page. This process triggers the page unloading event;

In this case we need to implement:

1. A prompt box pops up when the user jumps to the page (routing adopts history mode)

2. A prompt box pops up when the user closes the page

componentWillUnmount

First of all, this hook function is a function called before the component is uninstalled. It does not prevent the current component from being uninstalled. . So don’t try to make a prompt here, because even if it is prompted, the component will still be uninstalled and the article will still disappear.

Route Guard-<Prompt/>

In order to implement the first function, a judgment is required before jumping to the route. The previous route guard was canceled after react-router-dom 4.0 (Actually, I have not studied the previous version, this description is taken from the Internet). After react-router-dom 4.0, you can rely on the <Prompt/> component to achieve this function. Document link↗

Add this component to any part of your article editing page component

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

One thing to note here is that when using <Prompt/>, your route will jump It must be implemented through and cannot rely on the native tag.
When you click Cancel, you will stay on the current page. So far, the function of reminding the user to save when routing jumps has been implemented.

Window closing event-beforeunload

To achieve the second function, you need to rely on monitoring the window. The application of window events in React applications is far less frequent than that of DOM events, so I haven't encountered it in a long time and it is still a bit unfamiliar. The most important thing is, when should monitoring be performed?

Events should be listened to when the component is mounted, and event monitoring should be removed when the component is unmounted. Because I have begun to fully adopt the new features of hooks, useEffect is used here.

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 ...
}
Copy after login

There are a few things to note here:

1. The second parameter of useEffect is an empty array, which means that only two hooks, componentDidMount and componentWillUnmount, are called

2 , The second parameter of event monitoring and removal is the same event processing function

3. The confirm, prompt, and alert in the beforeunload event will be ignored. Instead, there is a built-in browser dialog box. (Reference: MDN|beforeunload)

4. There must be a returnValue and it is a non-empty string, but in some browsers this value will not be used as a pop-up message

The above is the detailed content of How to implement prompts before React component uninstallation, route jump, and page closing (refresh). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Table Border in HTML Table Border in HTML Sep 04, 2024 pm 04:49 PM

Guide to Table Border in HTML. Here we discuss multiple ways for defining table-border with examples of the Table Border in HTML.

HTML margin-left HTML margin-left Sep 04, 2024 pm 04:48 PM

Guide to HTML margin-left. Here we discuss a brief overview on HTML margin-left and its Examples along with its Code Implementation.

Nested Table in HTML Nested Table in HTML Sep 04, 2024 pm 04:49 PM

This is a guide to Nested Table in HTML. Here we discuss how to create a table within the table along with the respective examples.

HTML Table Layout HTML Table Layout Sep 04, 2024 pm 04:54 PM

Guide to HTML Table Layout. Here we discuss the Values of HTML Table Layout along with the examples and outputs n detail.

HTML Input Placeholder HTML Input Placeholder Sep 04, 2024 pm 04:54 PM

Guide to HTML Input Placeholder. Here we discuss the Examples of HTML Input Placeholder along with the codes and outputs.

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

Guide to Moving Text in HTML. Here we discuss an introduction, how marquee tag work with syntax and examples to implement.

HTML Ordered List HTML Ordered List Sep 04, 2024 pm 04:43 PM

Guide to the HTML Ordered List. Here we also discuss introduction of HTML Ordered list and types along with their example respectively

HTML onclick Button HTML onclick Button Sep 04, 2024 pm 04:49 PM

Guide to HTML onclick Button. Here we discuss their introduction, working, examples and onclick Event in various events respectively.

See all articles