【发布时间】:2021-09-26 09:17:25
【问题描述】:
1) 在 React 路由器中
<Route path={"/movie/:id"} component={ResultPage} />
2) 搜索组件
当我搜索电影时,它会点击 API 并显示一个 Result 组件。每个结果 Links 到一条动态路线(上图)。
<div className="results">
{data.map((movie) => (
<Result
poster_path={movie.poster_path}
alt={movie.title}
key={movie.id}
id={movie.id}
title={movie.title}
overview={movie.overview}
release_date={movie.release_date}
genre_ids={movie.genre_ids}
/>
))}
</div>;
3) 结果组件
我在Link 中传递了一些props 并使用props.location.state 来获取该ResultPage 组件的其余电影数据。
export default function Result(props) {
const { poster_path: poster, alt, title } = props;
return (
<div className="result">
<Link
to={{
pathname: `/movie/${title}`,
state: { ...props },
}}
>
<img
src={
poster
? `https://image.tmdb.org/t/p/original/${poster}`
: "https://www.genius100visions.com/wp-content/uploads/2017/09/placeholder-vertical.jpg"
}
alt={alt}
/>
</Link>
</div>
);
}
4) ResultPage 组件
你可以看到 URL 现在是 http://disnyplus.plus/movie/avengers-endgame 但是如果你打开一个新标签并复制/粘贴相同的 URL 页面会出错,因为它没有所有数据是我的猜测,因为它是从 Search -> Click Result -> ResultPage 流中的 props 获得的。
是否有其他方法可以实现这一点,或者是使用动态页面并将props 传递给它的副作用?
【问题讨论】:
标签: javascript reactjs react-router dynamic-routing