useNavigate 替换选项有什么作用?

Rea*_*eal 22 javascript reactjs react-router

文档说

要么传递一个带有可选第二个参数To的值(与 相同类型<Link to>),{ replace, state }要么

没有说它是做什么的。那么它会替换整个历史堆栈还是仅替换当前路线?我不知道。

Dre*_*ese 39

options属性replace是 REPLACE 导航操作。这是一个重定向,替换历史堆栈中的当前条目,而不是像常规导航一样将新条目推到顶部。

navigate(path); // PUSH, navigate
navigate(path, { replace: true }); // REPLACE, redirect
Run Code Online (Sandbox Code Playgroud)

使用导航

useNavigate钩子返回一个函数,允许您以编程方式导航,例如在提交表单后。如果使用 replace: true导航将替换历史堆栈中的当前条目,而不是添加新条目

  • @HackerMF这取决于用例,但它在身份验证流程中通常很有用,在该流程中,您重定向到登录页面并且需要重定向回正在访问的原始页面,您不希望登录页面保留在历史堆栈中可通过后退导航访问。`useNavigate` 钩子仅返回一个 `navigate` 函数。您可以通过在 options 参数中指定 `replace: true` 属性来通过 REPLACE 操作“重定向”。`navigate(path, { Replace: true })` 替换旧 RRD 版本中的 `history.replace(path)`。 (3认同)