Я пытаюсь передать значения реквизита, доступные моему компоненту, в ссылку на мой ответный маршрутизатор, но я не вижу никакого значения, заполняемого в ключе params реквизита, связанного со ссылкой. Я что-то не так делаю с разделом <Link> или <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 имеет только следующие.
Спасибо за исчерпывающий ответ. Имеет смысл!