我正在向Redux商店发送操作,并尝试从商店获取电影ID,但Movie组件无法渲染。我认为这样做是错误的方法。将电影ID传递到路线路径的正确方法是什么?
主要组成部分
render() {
return (
<BrowserRouter>
<div>
<Route exact path="/" component={PopularList} />
<Route path={`/${this.props.movieId`} component={Movie} />
</div>
</BrowserRouter>
)
}
我要从中获取链接的组件
链接到= {{/${movie.id}
}
render(){
if (this.props.popularMovies.length) {
return (
<section className={"movies"}>
<h3>Popular Movies</h3>
<h4>{this.props.popularMovies.length}</h4>
<div className={"movies__block"}>
{
this.props.popularMovies.map((movie) => {
return (
<Link to={`/${movie.id}`} component={Movie} key={movie.id} onClick={() => {this.getMovieId(movie.id)}}>
<div className={"movie-card"}>
<div>{movie.title}</div>
<img src={`${this.dbLink}${movie.poster_path}`}></img>
</div>
</Link>
)
})
}
</div>
</section>
)
}
}
答案 0 :(得分:1)
如果要传递参数,则可以使用如下链接:
<Route path='/route/:id' exact component={MyComponent} />
,然后在MyComponent
中,您可以使用:
const { id } = props.match.params;
否则,您可以通过:
<Link to={{ pathname: '/route', state: { foo: 'bar'} }}>My route</Link>
然后通过以下方式访问它:
const { foo } = props.location.state;