问题描述
【hash路由】利用this.props.history.push() 在发起路由跳转时,将参数赋值给state传参。
【写法如下】
this.props.history.push({ pathname: '/noAccess', state: { name: "lmm"}, search: "name" });
在 /noAccess 页面下获取参数
const { location: { state = {}, search = "" } } = this.props
console.log(state) // 打印一直为空json
console.log(search) // 打印一直为name
问题思考
- 写法没有问题,能正常获取除state以外的任何参数。(后面尝试了hash、key、search)
- 路由能正常跳转
- 考虑state的传参是否和其他参数不同
解决办法
后来了解到state参数的传递必须保证A、B组件在同一个Router下。
这个时候要关注项目最外层文件的router render,我的问题是使用了HashRouter 做了隔离,删除即可
后记
在路由传参中,state可以包含我们需要传递的多种参数类型,如果传参类型是JSON/Array,则state传参的首选。
版权声明:本文为miaomiao_1024原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。