一、背景介绍
七镜使用react开发页面时,用的路由库一直是React Router,2020年那会开发的项目中,切换页面传参使用的是history.push():
<img
key={index}
onClick={() =>
history.push({
pathname: `${ROUTE_APP[0]}/${ROUTE_ITEM_MEETING_PRODUCTION_V3[0]}`,
state: {
current: item.pc.home[3],
type: item.pc.home[4],
period: item.pc.home[5]
},
})
}
src={item.pc.home[0]}
/>
从上述代码中的 current:item.pc.home[3]
可以看到参数写在state中。在后续的开发中,发现这样存在一个问题,就是当用户在这个页面复制 url 分享给其他人时,其他人打开页面根本进不去。
为解决这个问题,便有了这篇文章。
二、直接上干货
写在前头:现在已经2023年了,2020年那会React Router的版本还是4.版本,现在七镜紧跟潮流,升级到了6.版本。
- 使用 useNavigate() 钩子
const navigate = useNavigate()
- 页面跳转
<article onClick={()=>navigate(`yourpath?id=${item.id}`)}>
- 读取参数
useEffect(() => {
if (location.search.includes("id=")) {
let urlParams = new URLSearchParams(location.search.substring(1))
let id = urlParams.get("id")
console.log(id)
}
}, [location.search])
-
切换页面传参完成
好了,现在可以直接把浏览器上的链接分享给其他人用了,而且其他人粘贴到导航栏地址栏中可以直接访问到传参后的页面。
网友评论