首页 > 其他分享 >react向路由组件传递参数数据的3种方式

react向路由组件传递参数数据的3种方式

时间:2022-09-05 16:15:26浏览次数:127  
标签:title ele react 参数 组件 id 路由

1、params传递参数

步骤:

(1)路由链接(携带参数)

<Link to={`/home/message/detail/${ele.id}/${ele.title}`}>{ele.title}</Link>

(2)注册路由(声明接收):

<Route path='/home/message/detail/:id/:title' component={Detail}></Route>

(3)接收参数:

const {id,title} = this.props.match.params;

2、search传递参数

步骤:

(1)路由链接(携带参数):

<Link to={`/home/message/detail/?id=${ele.id}&title=${ele.title}`}>{ele.title}</Link>

(2)注册路由(无需声明,正常注册即可):

 <Route path='/home/message/detail' component={Detail}></Route>

(3)接收参数:

import qs from 'qs' /*react自带的库,18的引入方式*/
import qs from 'querystring' /*react自带的库,17的引入方式*/

const {search} = this.props.location
const {id,title} = qs.parse(search.slice(1)); /*转为对象形式*/

(4)其他: 获取到的search是urlencode编码字符串(id=1&name='test'),需要借助react自动下载的包querystring解析

3、传递参数

步骤:

(1)路由链接(携带参数,向路由组件传递state参数,{}表示写js,{{}}表示写对象,这里的to要是一个对象):

<Link to={{pathname:'/home/message/detail',state:{id:ele.id,title:ele.title}}}>{ele.title}</Link>

(2)注册路由(无需声明,正常注册即可):

<Route path='/home/message/detail' component={Detail}></Route>

(3)接收参数:

const {id,title} = this.props.location.state || {};
let item = list.find(ele=>ele.id === Number(id))|| {};

(4)其他:刷新也可以保留参数

4、总结

三种传递参数区别:params、search会把参数暴露在导航栏、state不会暴露在导航栏

标签:title,ele,react,参数,组件,id,路由
From: https://www.cnblogs.com/wangdanmin/p/16658500.html

相关文章

  • vue3 组件-动画进度条
    https://kuangyx.cn/docs/文章/vue3组件/进度条.html......
  • vue3 组件-通知菜单
    https://kuangyx.cn/docs/文章/vue3组件/通知菜单.html......
  • vue3 组件-表格分页
    typescript类型提示(属性、方法、el-table与el-pagination自带ts类型)json配置el-table控制栏自定义单元格编辑编辑行自动请求接口接口请求参数与响应数据路径......
  • vue3 组件-开始结束日期选择器
    https://kuangyx.cn/docs/文章/vue3组件/时间选择.html......
  • vue3 组件-上升下降趋势标记
    https://kuangyx.cn/docs/文章/vue3组件/趋势标记.html......
  • vue3 组件-省市区城市选择器
    查看文档......
  • React生命周期
    React的生命周期中常用的有:constructor,负责数据初始化。render,将jsx转换成真实的dom节点。componentDidMount,组件第一次渲染完成时触发。componentDidUpdate,组件更新完......
  • angular如何引用其他组件
    原文链接:angular如何引用其他组件–每天进步一点点(longkui.site)   0.背景前面一篇文章,简单介绍过angular创建并引用组件。在实际情况开发中,情况会稍微......
  • vue项目里地图组件截图快照的实现方法---html2Canvas
    一、前言最近项目里要求要把当前地图截图展示在小窗里,之前没接触这种请求,于是我就百度了一下,发现有这么一块插件html2Canvas,它能够将dom元素转换成canvas进行截图保存,而......
  • vue3——shallowReactive 与 shallowRef
    shallowReactive:只处理对象最外层属性的响应式(浅响应式)。shallowRef:只处理基本数据类型的响应式,不进行对象的响应式处理。什么时候使用?如果有一个对象数据,结......