当前位置: 首页 > 知识库问答 >
问题:

在React路由器链接中将对象作为道具传递

鲍健柏
2023-03-14

我正在获取productList中的产品列表,在其中,我需要将选定的产品对象传递给Products

目前,我正在尝试将id作为路由参数传递,并再次获取产品对象。但是我想将整个产品对象从ProductList发送到product

我的路线是

<Route path={joinPath(["/product", ":id?"])} component={Product} />

产品列表组件链接

<Link to={"/product/" + this.props.product.Id} >{this.props.product.Name} </Link>

如何将产品对象作为道具传递给product

下面的代码在Typescript中抛出错误,表示链接上不存在以下属性。

<Link to={"/product/" + this.props.product.Id} params={product}>{Name}</Link>

我尝试了以下问题,但似乎没有一个有我的问题。

  • 在链路反应路由器中传递道具

共有3个答案

阮俊弼
2023-03-14

您可以尝试通过查询参数来完成,就像react router中的Pass object through链接一样,这非常难看。

此外,您还可以尝试使用其他元素替换链接,例如按钮,然后在“侦听器”中单击“通过browserHistory.push进行位置更改”({pathname:“/product/”this.props.product.Id,state:this.props.product})和“产品作为状态属性”。

景安翔
2023-03-14

我建议使用redux检索数据。当您导航到产品路线时,您可以通过发送一些操作来获取产品的详细信息。

componentDidMount() {
    let productId = this.props.match.params.Id;
    this.props.actions.getProduct(productId);
}

产品路线应该和商店连接。希望这有帮助。

公冶智刚
2023-03-14

链接的“to”属性可以接受一个对象,因此您可以像这样传递道具:

<Link to={
    { 
        pathname: "/product/" + this.props.product.Id,
        myCustomProps: product
    }
}>
    {Name}
</Link>

然后您应该能够在this.props.location.myCustomProps

 类似资料:
  • 我正在使用react with react路由器。我正试图在react路由器的“链接”中传递属性 “链接”呈现页面,但不将属性传递给新视图。下面是查看代码 如何使用“链接”传递数据?

  • 我使用的反应与反应路由器的项目,我需要传递道具的子组件从路由。 我有这样的设置: App.js Home.js 问题是主组件总是给出错误“未定义”。我无法理解如何解决这个问题。如果我从Home.js中移除道具,组件渲染就很好。但当我尝试访问道具时,会出现错误。

  • 我对反应和试图理解如何传递道具很陌生。 首先,我设置了一个Navlink组件,该组件包含子类别属性: ,,都是从json文件中获取的,所以这部分是可以的。 每条路线的定义如下: 所以它呈现一个名为

  • 我尝试使用react路由器将道具传递给组件,如下所示: 我如何做到这一点,但与反应路由器,我如何在组件本身使用它? 我试过这个,但不起作用:

  • 我有一个模态,我想在其中放置一个动态嵌套视图。我认为这样做的一个好方法是像这样使用 我想把一些道具传给这些组件,就像我平时在React中一样 最终,我将移动到存储/获取状态中的这些属性,但是考虑到当前的实现,在定义开关

  • 注意:如果我像其他属性一样添加appState;提交组件中没有appState之类的属性, 如果我用这个; appState传递很好,但这次缺少历史对象,正确的方法是什么?appState只是mobx类实例。 编辑:我找到了一个“奇怪”的解决方案。我将route元素更改为此; 然后,我可以通过访问相同的历史对象在进行此更改之前,我可以将其用作 如果我让它工作正常,但是用这种方式获取这个历史对象很烦