React router.push 和 router.replace 之间的区别?

问题描述 投票:0回答:3

React router.pushrouter.replace 有什么区别?

reactjs react-router react-router-v4
3个回答
41
投票

路由器历史记录的工作方式类似于

stack
routes
。当您使用
router.replace
时,您将覆盖堆栈的顶部。使用
router.push
时,它会在
stack
的顶部添加一条新路线。

路由器历史记录可以让您返回到上一页。例如,当用户导航到无效路线时,您可以使用

router.replace
来阻止用户导航回无效路线。


26
投票

您在网络浏览器中访问的页面的历史记录就像一个

stack
数据结构。您可以
push
将新记录添加到历史堆栈的顶部,也可以
replace
顶部记录。如果您使用
push
,然后点击浏览器的后退按钮,它将带您返回当前所在的页面,但如果您使用
replace
,它将带您返回两页。


0
投票

相似之处

  • 两者都将地址栏的 url 更改为新路由
  • 两者都会将您的用户带到新位置

差异

  • router.replace()
    将阻止用户返回上一页。
    router.back()
    不会将用户定位到之前的位置
  • router.push()
    添加到历史堆栈,用户可以转到上一个位置
© www.soinside.com 2019 - 2024. All rights reserved.