【发布时间】:2020-09-08 04:18:42
【问题描述】:
我正在使用反应路由器。我想检测我来自的上一页(外部应用程序示例:从 gmail 到我的应用程序)。我在我的上下文中有路由器。但是,我在路由器对象上看不到任何属性,例如“先前路径”或历史记录。我该怎么做?
示例 2:用户下订单,我们通过电子邮件向他们发送电子邮件确认,其中 onclick 上 view-order-details 他们被导航回我们的网络应用程序,现在如何检测他们来自哪个链接?
这是另一个更好理解的上下文
我必须在我的网络应用程序中实现一个后退按钮,当用户从电子邮件转到我的网络应用程序时,他直接导航到https://example.com/orders/{orderID},如果我只使用props.history.goBack,它将返回到电子邮件页面。但我希望用户导航到https://example.com/dashboard。
现在你可能会说使用props.history.push('/dashboard') 这将成为静态值。如果用户在点击后退按钮时从dashboard->all-orders->orders/{orderID} 内部导航(不是来自电子邮件或外部页面),则应导航到dashboard->all-orders 页面而不是仪表板。
【问题讨论】:
-
通常你会在链接的查询字符串中传递类似的东西。
-
由于您控制了确认电子邮件,您可以在其中添加一个查询字符串,告诉您链接的发送位置,例如只需将
&source=email添加到指向您的 应用程序的链接,然后在您的应用程序 中,您可以读取当前查询字符串以确定它是哪个链接。跨度> -
您正在寻找构建后退按钮,如果用户来自外部链接(无推荐人),他们应该返回仪表板,但如果他们来自内部链接,则返回按钮实际上应该转到最后访问的页面吗?该用例在referrer 的文档中进行了描述=>
document.referrer是一个空字符串,当页面不是通过链接打开时。 -
因此,如果推荐人不是您自己的网站或为空,请转到仪表板。否则使用 history.goBack()
-
你好@holla 我在我的答案中添加了一个例子。让我知道这是否有帮助。
标签: javascript reactjs react-router