reactjs - 反应路由器道具参数未出现
问题描述
我正在尝试将组件可访问的道具值传递给我的反应路由器链接,但我没有看到params
与链接关联的道具的键中填充了任何值。<Link>
我在or<Route>
部分做错了什么吗?我没有看到任何表明我的设置错误的错误
这是我的代码:
import React from 'react';
import ReactMarkdown from 'react-markdown';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import AnnotationCard from './AnnotationCard';
//Annotation Card - Body
export default class AnnotationBody extends React.Component {
render() {
const type = this.props.type.toLowerCase();
return (
<Router>
<div>
<div className="row d-flex p-1">
<div className="col-md-12">
<h3> <Link to="annotations" params={{ annotationId: this.props.linkId }} className={"text-" + type}>{this.props.title}</Link></h3>
</div>
</div>
</div>
<Route name="annotations" path='/app/annotation/:annotationId' component={AnnotationCard} />
</Router>
)
}
}
解决方案
你的路线是,
<Route name="annotations" path='/app/annotation/:annotationId' component={AnnotationCard} />
这条路线的相关链接是,
<Link to="annotations" params={{ annotationId: this.props.linkId }} className={"text-" + type}>{this.props.title}</Link>
在这里,您link
将无法在您定义的路线path='/app/annotation/:annotationId'
和您仅使用的链接中工作to="annotations"
,因此您的链接最终会出现base_url/annotations
在您的浏览器中,并且可能404 - page not found error
因为您没有此路线。
根据文档,
如果你想将参数传递给你的链接,你应该这样做,
<Link to={`/app/annotation/${this.props.linkId}`} className={"text-" + type}>{this.props.title}</Link> //considering associate route for this link is with `path='/app/annotation/:annotationId'`
注意:您不能通过name
这里Route
,
<Route name="annotations" path='/app/annotation/:annotationId' component={AnnotationCard} />
根据文档,
Route
只有以下。
- 零件
- 渲染:函数
- 孩子们:功能
- 路径:字符串 | 细绳[]
- 准确:布尔
- 严格:布尔
- 地点:对象
- 敏感:布尔
推荐阅读
- javascript - 如何在 google app 脚本中获取我的 google sheet 的 json 格式?
- html - 反应规模错误
- assembly - 简单回路(读取温度 - MC68HC)
- python - Nginx 启动失败
- python - 创建一个遍历嵌套列表并返回字典的函数:列表中的空元素在字典中返回无
- javascript - 如何修复 React Native setState 错误?
- c++ - Qt用另一个类方法连接信号
- mongodb - 在 MongoDB 中,如何在使用 $lookup 的聚合管道中执行 $geoWithin 查询?
- python - tf.EagerTensor 如何被强制转换为 ndarray?
- python - 显示错误。行:1,列:1,Flask 中的语法错误