웹 프론트엔드 JS 튜토리얼 React 구성 요소 제거, 경로 점프 및 페이지 닫기(새로 고침) 전에 프롬프트를 구현하는 방법

React 구성 요소 제거, 경로 점프 및 페이지 닫기(새로 고침) 전에 프롬프트를 구현하는 방법

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

이 기사에서 제공하는 내용은 React 구성 요소 제거, 경로 점프 및 페이지 닫기(새로 고침) 전 프롬프트 구현 방법에 대한 내용이므로 필요한 친구가 참고할 수 있기를 바랍니다. 도와주세요.

React 구성 요소 언로드 수명 주기, 라우팅 점프 및 페이지 닫기는 다소 비슷해 보입니다. 예를 들어 현재 구성 요소가 뷰포트에서 사라지려고 하지만 실제로는 이벤트가 발생합니다. 모두 다릅니다. 실제 사례부터 시작해 보겠습니다.

단일 페이지 애플리케이션의 기사 편집 페이지에서 사용자가 아직 저장되지 않은 기사를 편집하고 있습니다.

사용자가 실수로 다른 경로로 점프한 경우, 계속 점프할지 여부를 사용자에게 알려야 합니다. 이 프로세스에서는 경로 점프 및 구성요소 제거가 실행되어야 하며

사용자가 실수로 닫기를 클릭합니다. 탭 버튼을 누르거나 페이지를 새로 고쳤습니다. 이 프로세스는 페이지 언로드 이벤트를 트리거합니다.

이 경우 다음을 구현해야 합니다.

1 사용자가 페이지로 이동할 때 프롬프트 상자가 나타납니다(라우팅은 기록을 채택합니다). 모드)#🎜 🎜#

2. 사용자가 페이지를 닫으면 프롬프트 상자가 나타납니다

comComponentWillUnmount

첫번째 모두, 이 후크 함수는 구성 요소가 제거되기 전에 호출됩니다. 현재 구성 요소가 제거되는 것을 방지하지 않는 기능입니다. 따라서 여기에서 프롬프트를 표시하려고 하지 마십시오. 프롬프트가 표시되더라도 구성 요소는 여전히 제거되고 기사는 여전히 사라지기 때문입니다.

Route Guard-<Prompt/>

첫 번째 기능을 구현하려면 루트를 점프하기 전에 판단이 필요합니다.

구성요소에 있습니다. 문서 링크↗react-router-dom 4.0 之后取消了先前的路由守卫(其实我没研究过之前版本的,这个描述摘自网络)。在react-router-dom 4.0之后,实现这个功能可以依靠<Prompt/>

이 구성요소를 기사 편집 페이지 구성요소의 어느 부분에나 추가하세요

import {Prompt} from 'react-router-dom';
const Editor=()=>{
    return (
        <div>
          <Prompt
            when={true}
            message={location => '文章要保存吼,确定离开吗?'}
          />
        </div>
    )
}
로그인 후 복사
여기서 한 가지 주의할 점은 <프롬프트/>를 사용할 때 경로 점프는 를 통해 구현되어야 하며

취소를 클릭하시면 현재 페이지에 머물게 됩니다. 지금까지는 라우팅 점프 시 사용자에게 저장을 상기시키는 기능이 구현되었습니다.

창 닫기 이벤트-beforeunload

두 번째 기능을 구현하려면 창 모니터링에 의존해야 합니다. React 애플리케이션에서 윈도우 이벤트를 적용하는 일은 DOM 이벤트에 비해 훨씬 덜 빈번하기 때문에 오랫동안 접하지도 않았고 아직은 조금 낯설기도 합니다. 가장 중요한 것은 모니터링을 언제 수행해야 하는가입니다.

컴포넌트가 마운트되면 이벤트를 수신해야 하며, 컴포넌트가 마운트 해제되면 이벤트 모니터링을 제거해야 합니다. Hooks의 새로운 기능을 완전히 채택하기 시작했기 때문에 여기서는 useEffect를 사용합니다.

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 ...
}
로그인 후 복사
여기서 몇 가지 참고할 사항이 있습니다:

1 useEffect의 두 번째 매개변수는 빈 배열입니다. 즉, 두 개의 후크인 componentDidMount 및 componentWillUnmount만 호출됩니다. #🎜🎜 #

2. 이벤트 모니터링 및 제거의 두 번째 매개변수는 동일한 이벤트 처리 기능입니다.

3 beforeunload 이벤트의 확인, 프롬프트 및 경고는 무시됩니다. 대신 내장된 브라우저 대화 상자가 있습니다. (참조:

MDN|beforeunload

) 4. returnValue가 있어야 하며 비어 있지 않은 문자열이지만 일부 브라우저에서는 이 값이 다음과 같이 사용되지 않습니다. 폭탄.창 메시지

위 내용은 React 구성 요소 제거, 경로 점프 및 페이지 닫기(새로 고침) 전에 프롬프트를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML의 테이블 테두리 HTML의 테이블 테두리 Sep 04, 2024 pm 04:49 PM

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML의 중첩 테이블 HTML의 중첩 테이블 Sep 04, 2024 pm 04:49 PM

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 여백-왼쪽 HTML 여백-왼쪽 Sep 04, 2024 pm 04:48 PM

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 HTML 테이블 레이아웃 Sep 04, 2024 pm 04:54 PM

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 입력 자리 표시자 HTML 입력 자리 표시자 Sep 04, 2024 pm 04:54 PM

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

HTML에서 텍스트 이동 HTML에서 텍스트 이동 Sep 04, 2024 pm 04:45 PM

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.

HTML 정렬 목록 HTML 정렬 목록 Sep 04, 2024 pm 04:43 PM

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML 온클릭 버튼 HTML 온클릭 버튼 Sep 04, 2024 pm 04:49 PM

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

See all articles