我在React中遇到导航阻止问题。
我使用React + Redux和React Router。我一直在使用该组件,以防止在React中导航不完整的表单。只要导航实际上在React中,这就可以正常工作。但是,它不会阻止通过URL输入或点击外部超链接进行导航。
React中是否有可接受的方法来处理外部超链接并阻止React以外的导航?
答案 0 :(得分:2)
你这里没有提供任何代码,所以我想猜测一下。如果我理解正确,您可以通过react-router管理内部重定向,并认为React应用程序没有任何问题。
根据你的陈述:
但是,它不会阻止通过URL输入或点击外部超链接进行导航。
让我们解决这两个问题。首先不能阻止用户进入导航栏并输入新的URL,这是在浏览器方面设计完成的,这对用户来说是不好的,当然也是侵入性的!
但是关于您点击链接的第二个问题,该链接会将您发送到您的域名或应用程序之外,您可以对此采取一些措施。
这里有多个选项,我会给你三个:
您可以阻止或更好地说,请用户使用history.block
确认转换到其他页面作为历史文档的一个例子:
const unblock = history.block('Are you sure you want to leave this page?')
只是不要使用锚元素href
,而是依赖于history
的{{1}}。
您可以在此处详细了解:react-router/history
但基本上你可以使用历史记录中的push方法连接你的重定向,它看起来像:
react-router
然后您还有其他选项,例如使用条件渲染和Redirect组件,但另一种方法足以解决您的问题。
答案 1 :(得分:1)
我认为您正在寻找React Router的历史API下的阻止转换。
根据反应路由器历史记录github页面上的示例:
您可以注册一条简单的提示消息,该消息将在用户离开当前页面之前显示给用户。
const unblock = history.block('Are you sure you want to leave this page?')