react-router v6中state传递的参数刷新页面是否会丢失?
React Router 页面刷新时state参数不丢失的原因
- 结论:这不是React Router v6的新优化,从支持HTML5 History API的版本开始,使用history模式时,通过state传递的参数刷新页面就不会丢失。
- 核心原因:React Router的
state参数依托HTML5 History API的pushState/replaceState方法实现,这些state数据会被浏览器存在会话级的存储区域(并非内存),只要当前浏览器会话未关闭,刷新页面时浏览器会自动恢复这部分state信息。 - 为什么会有"刷新丢失"的说法?
- 若使用
hash路由模式:这种模式下的state存在内存中,刷新页面时会被清空,导致参数丢失; - 部分旧资料可能混淆了路由模式,或是针对早期版本的特殊场景描述,并不适用于HTML5 history模式的情况。
- 若使用
你的测试代码示例(v6的useNavigate)默认采用HTML5 history模式,所以刷新后state参数能正常保留:
const navigate = useNavigate(); navigate('/path/to/newpage', { state: { name: 'lucy', age: 20 } });
内容的提问来源于stack exchange,提问作者zhaolei
相关产品推荐
相关产品推荐

