Olá Reinaldo!
Felizmente, é possível interceptar essas mudanças de página e tomar alguma ação para evitar a perda de dados.
Uma forma de fazer isso é utilizando o React Router, que permite controlar a navegação na sua aplicação. Você pode utilizar o componente Prompt
do React Router para exibir um diálogo de confirmação antes de permitir que a página seja fechada.
Aqui está um exemplo de como você pode utilizar o Prompt
para exibir um diálogo de confirmação:
import { Prompt } from 'react-router-dom';
function MeuComponente() {
const bloquearNavegacao = (location) => {
// Verifique se há dados não salvos
if (temDadosNaoSalvos) {
// Exiba o diálogo de confirmação
return 'Tem certeza que deseja sair? Seus dados não salvos serão perdidos.';
}
};
return (
<div>
<Prompt when={true} message={bloquearNavegacao} />
{/* Restante do seu componente */}
</div>
);
}
No exemplo acima, o Prompt
é utilizado dentro do componente MeuComponente
. O when
é definido como true
para sempre exibir o diálogo de confirmação. O message
é uma função que será chamada quando ocorrer uma mudança de página. Nessa função, você pode verificar se há dados não salvos e retornar uma mensagem de confirmação.
Dessa forma, sempre que o usuário tentar fechar a janela ou navegar para outra página, o diálogo de confirmação será exibido, evitando a perda de dados.
Caso queria entender um pouco mais como funciona, logo abaixo estarei deixando o link de um material que pode lhe ajudar.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.