Я пытаюсь использовать реактивный маршрутизатор в моем приложении activjs.И я столкнулся с этой проблемой:
Вот что я пытаюсь сделать:
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import About from '../Pages/About';
import Home from '../Pages/Home';
import Topics from '../Pages/Topics';
import LinkTest from '../Pages/LinkTest';
class AppRouter extends Component {
render() {
return (
<Router>
<div>
<ul>
<li>
<Link to="/home">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/topics">Topics</Link>
</li>
<Route path="/home" component={LinkTest}/>
</ul>
<hr />
<Route path="/home" component={Home}/>
<Route path="/about" component={About} />
<Route path="/topics" component={Topics} />
</div>
</Router>
);
}
}
export default AppRouter;
Игнорировать компоненты "about" и "topic", когда я нажимаю на ссылку "Главная",он должен быть нацелен на 2 маршрута, один будет отображать «LinkTest», а другой - «Home».
Вот что внутри "LinkTest":
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
class LinkTest extends Component {
render() {
const {match}=this.props;
return (
<div>
<Link to={`${match.url}/Test`}>Link To Test</Link>
</div>
);
}
}
export default LinkTest;
А внутри моего "Домашнего" компонента:
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import Test from './Test';
class Home extends Component {
render() {
const {match} = this.props;
console.log(match.url);
return (
<Router>
<div>
<h2>
Hello from Home page
<Link to={`${match.url}/Test`}>Link To Test</Link>
<Route path={`${match.url}/Test`} component={Test}/>
</h2>
</div>
</Router>
);
}
}
export default Home;
Однако:
Когда я нажимаю на ссылку внутри компонента "LinkTest" (который отображался ранее), URL-адрес в браузере отображается "http://localhost:3000/home/Test",, но ничего не происходит.
Когда я щелкнул ссылку внутри компонента «Домой» (который отображался в то же время, что и «LinkTest» по той же ссылке), в браузере показывался тот же URL-адрес: «http://localhost:3000/home/Test", только этораз он рендерил компонент «Тест».
Почему это происходит?(чего я хочу добиться, так это того, что я хочу использовать ссылку внутри «LinkTest» для рендеринга компонента «Test» внутри компонента «Home» или чего-то подобного).
Надеюсь, это достаточно ясно.