React 阻止路由离开
Posted amiezhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React 阻止路由离开相关的知识,希望对你有一定的参考价值。
React不像Vue那样有router.beforeEach这样的路由钩子,但是它提供了一个组件:Prompt
import { Prompt } from ‘react-router-dom‘; <Prompt when={true} message={location => ‘信息还没保存,确定离开吗?‘} />
在React跳转路由的时候,Prompt就会触发
但是这个路由没法阻止刷新和关闭,这个时候我们用beforeunload事件
class Test extends React.Component { componentDidMount() { this.init(); window.addEventListener(‘beforeunload‘, this.beforeunload); } componentWillUnmount = () => { window.removeEventListener(‘beforeunload‘, this.beforeunload); }; beforeunload = (ev: any) => { if (ev) { ev.returnValue = ‘‘; } }; render() { return <div>...</div> } }
以上是关于React 阻止路由离开的主要内容,如果未能解决你的问题,请参考以下文章
在 React Router v6 中,如何在离开页面/路由之前检查表单是不是脏
阻止用户访问其他路由 - ReactJS - React-Router -
如何在 create-react-app 上使用“/”阻止路由
使用具有不同片段字段的相同中继根查询的多个 react-router-relay 路由