目前正在使用create-react-app构建,我正在尝试获得动态路由。我有一个网站有3个页面:手风琴,电影,MovieDetail。
Page Movie是一个包含从swapi获取的电影列表的页面。它的目标是只要你点击一个电影标题,就会打开一个新的页面。新页面将为您提供有关所单击电影的更多信息。
问题是: MovieDetail页面将在同一电影页面上呈现信息。不是在新的页面上..
代码: Index.tsx
const routing = (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/movies">Movies</Link>
</li>
</ul>
</nav>
<Switch>
<Route exact={true} path="/" component={App} />
<Route path="/movies" component={Movies} />
<Route exact={true} path="/movies/:id" component={MovieDetail} />
<Route component={NotFound} />
</Switch>
</div>
</Router>
);
ReactDOM.render(routing, document.getElementById('root'));Movies.tsx:
import React from 'react';
import { Route, useParams, Link, Switch } from 'react-router-dom';
import { useMovies } from './api/useMovies';
import { MovieDetail } from './MovieDetail';
export const Movies = () => {
let { id } = useParams();
const movies = useMovies();
return (
<div>
<h1>Movies</h1>
<h2>Selected movie: {id}</h2>
<h2>Select a movie:</h2>
{movies &&
(
<ul>
{console.log(movies)}
{movies.results.map((movie, index) => {
return (
<li key={index}>
<Link to={`/movies/${index + 1}`}>{movie.title}</Link>
</li>
);
})
}
</ul>
)
}
<Switch>
<Route path="/movies/:id" component={MovieDetail} />
</Switch>
</div>
);
};MovieDetail.tsx:
import React from 'react';
export const MovieDetail = () => {
return (
<h1>Movie Title</h1>
);
};发布于 2020-01-10 21:31:33
您需要将exact添加到您的电影路由
<Switch>
<Route exact={true} path="/" component={App} />
<Route exact={true} path="/movies" component={Movies} />
<Route exact={true} path="/movies/:id" component={MovieDetail} />
<Route component={NotFound} />
</Switch>或者移动/movies路由更有意义
<Switch>
<Route exact={true} path="/" component={App} />
<Route exact={true} path="/movies/:id" component={MovieDetail} />
<Route path="/movies" component={Movies} />
<Route component={NotFound} />
</Switch>发布于 2020-01-10 21:12:24
https://stackoverflow.com/questions/59681483
复制相似问题