【问题标题】:how to pass props to the route when using react router <Link>使用反应路由器 <Link> 时如何将道具传递给路由
【发布时间】:2020-04-15 13:09:35
【问题描述】:

我正在尝试将道具传递给 Link 元素的路线。但是当我打开 invoiceDetails 组件时,我说 props 是未定义的。

以下是我尝试传递道具的方式。它设置正确,因为它转到 InvoiceDetails 组件。我在 index.js 中声明了路由

<Link props={{name: 'jack', age: 25, city: 'Antwerp'}}to='/InvoiceDetails'><p>VIEW</p></Link>

在 InvoiceDetails 组件中

import React from 'react'
import DashboardHeader from '../dashboardHeader/dashboardHeader'
import { Link } from 'react-router-dom'
function InvoiceDetails(){
console.log(props)
    return(
        <div className='w-10/12 bg-gray-300 float-right min-h-screen'>
          <div className='w-10/12 fixed z-50'>
.........
)
}
export default invoiceDetails

我想使用从全局 redux 状态获得的变量将道具传递给 invoicedetails 组件。现在静态数据很好,我猜同样的原则适用。

【问题讨论】:

标签: javascript reactjs routing react-router


【解决方案1】:

state中提道具即可通过

<Link
  to={{
    pathname: "/InvoiceDetails",
    state: { name: 'jack', age: 25, city: 'Antwerp'}
  }}
/>

阅读更多here

要在下一个组件中使用它,您必须使用 react-router-dom HOC withRouter 或使用他们提供的 useLocation 挂钩来包装您的组件。

EX- 在你的第二个组件中 -

import {useLocation} from "react-router-dom";

function Child() {
 let data = useLocation();
 console.log(data); //state would be in data.state//
}

【讨论】:

  • 这是有道理的,你能否在后面告诉我如何在 invoicedetails 组件中访问它,因为我在尝试时遇到“无法读取 .... of undefined”错误将其登录到组件中。
  • 我意识到我没有在我的答案中添加它,所以我编辑了它@Jonas.D
  • 感谢您的评论。我通过在函数 Child( props ) 中将 props 作为参数传递然后使用它来修复它。您帮助我走上了正确的道路并解决了我的问题,祝您度过愉快的一天!
猜你喜欢
  • 2015-09-01
  • 2019-08-15
  • 2020-03-26
  • 2023-04-03
  • 2016-09-30
  • 2020-07-07
  • 2018-08-28
  • 2023-02-22
  • 2021-06-30
相关资源
最近更新 更多