【发布时间】:2019-09-29 12:48:26
【问题描述】:
所以,在路由和管理我的数据时,我遇到了一些问题。
Listing 组件本质上是一大堆包含电影数据的卡片,我从我的要点中获取这些数据。我使用.map 为每张卡片创建了一个组件,并将值添加到道具中。
我的目标:当我点击任何卡片的按钮时,我想转到一个页面并动态访问该电影卡片的名称。
例如::
假设我单击一个按钮,上面写着一张特定电影卡的“更多信息”。我被路由到 MoreInformation 页面,因为该按钮将包含在 Link 中。
在 MoreInformation 页面/组件中我想动态添加:
<h1>{name}</h1>
这只是我想要完成的一个基本示例,但换句话说,我如何将特定电影卡的数据传输到 MoreInformation 页面,以便我可以访问它以添加动态数据。
如果我能得到反馈,我将非常感激,因为这个项目对时间很敏感......谢谢大家。
const MoviesPage = () => {
const [movies, setMovies] = useState([])
useEffect(() => {
axios
.get(
`https://gist.githubusercontent.com/ernestosotelo/9932c659b460e5ddeec8a8ae76164a0d/raw/ce8d7b248f61e73bf3c767538728505d6bac9835/json`
)
.then(res => {
const data = res.data
setMovies(data)
})
}, [])
return (
<Layout>
<div style={{ background: "hsl(215, 100%, 3%" }}>
<TopThree />
<p style={{ color: "#e0dfe2", fontSize: "1.7rem", marginTop: "3rem" }}>
<b
style={{
padding: ".5rem 1.5rem .5rem 1.5rem",
background: "#f9ba00",
fontSize: "2rem",
marginLeft: "4rem",
color: "black"
}}
>
!
</b>{" "}
Click 'Remove' to remove movies you definitely will not watch! There
is an undo option.
</p>
<div className={listingCSS.block}>
{movies.map(movie => {
return (
<Listing
key={movie.name}
name={movie.name}
plot={movie.plot}
date={movie.releaseDate}
genre={movie.genre}
imdbRating={movie.imdbRating ? movie.imdbRating : "N/A"}
tomatoRating={movie.tomatoRating ? movie.tomatoRating : "N/A"}
metaRating={movie.metaRating ? movie.metaRating : "N/A"}
erbertRating={movie.erbertRating ? movie.erbertRating : "N/A"}
tmdbRating={movie.tmdbRating ? movie.tmdbRating : "N/A"}
movshoRating={movie.movshoRating}
streamOn={movie.streamOn}
poster={movie.poster}
alt={movie.name}
/>
)
})}
</div>
</div>
</Layout>
)
}
【问题讨论】:
-
您可以为每部电影添加唯一标识符,并通过 URL 将该标识符传递给其他页面。在另一页上,只需从服务器或某种内存/本地存储中检索相应电影的详细信息。
-
我认为另一篇文章是对其工作方式的补充。 stackoverflow.com/questions/55219775/…
标签: javascript reactjs react-router react-hooks