通过两个数组 React 映射
map through two arrays React
我想在我的应用程序上显示来自两个映射数组的信息。
{filmWorld.Provider &&
filmWorld.Movies.map((movie, index) => {
return (
<div className="movies" key={index}>
<h3>{movie.Title}</h3>
<img src={movie.Poster} alt={movie.Title} />
<h5>{movie.Actors} </h5>
<h6> Price: ${movie.Price}</h6>
<hr />
</div>
);
})}
这目前工作正常,但我想在同一个 h6 中理想地显示另一家电影院的另一个价格。其他信息都一样。
另一张地图会非常相似:
{cinemaWorld.Provider &&
cinemaWorld.Movies.map((movie, index) => {
return (
<div className="movies" key={index}>
<h6> Price: ${movie.Price}</h6>
</div>
);
})}
但同样,我只需要将这家电影院的价格显示在同一个 h6 标签上。
或者采用不同的方法(例如合并变量)会更直观吗?
理想的最终结果代码 return 是这样的:
return (
<div className="movies" key={index}>
<h3>{movie.Title}</h3>
<img src={movie.Poster} alt={movie.Title} />
<h5>{movie.Actors} </h5>
<h6> FilmWorld Price: ${movie.Price}
CinemaWorld Price: ${movie.Price}</h6>
<hr />
</div>
);
})}
因此该页面将显示电影名称、电影海报图片、演员列表以及放映该电影的两家电影院的价格比较。
我在这些变量中存储来自两个不同 API 的数据。
我会使用 memo hook 来创建你想要的数据结构
const movies = useMemo(() => {
if (!filmWorld.Provider) return [];
return filmWorld.Movies.map((movie, index) => ({
...movie,
cinemaWorldPrice: cinemaWorld.Provider && cinemaWorld.Movies[index]?.Price,
}));
}, [filmWorld, cinemaWorld]);
这会从 cinemaWorld.Movies
中获取相应的索引(条件是 cinemaWorld.Provider
)。
现在您可以迭代 movies
数组
{
movies.map((movie, index) => (
<div className="movies" key={index}>
<h3>{movie.Title}</h3>
<img src={movie.Poster} alt={movie.Title} />
<h5>{movie.Actors} </h5>
<h6>
Price: ${movie.Price}
CinemaWorld Price: ${movie.cinemaWorldPrice}
</h6>
<hr />
</div>
));
}
我想在我的应用程序上显示来自两个映射数组的信息。
{filmWorld.Provider &&
filmWorld.Movies.map((movie, index) => {
return (
<div className="movies" key={index}>
<h3>{movie.Title}</h3>
<img src={movie.Poster} alt={movie.Title} />
<h5>{movie.Actors} </h5>
<h6> Price: ${movie.Price}</h6>
<hr />
</div>
);
})}
这目前工作正常,但我想在同一个 h6 中理想地显示另一家电影院的另一个价格。其他信息都一样。
另一张地图会非常相似:
{cinemaWorld.Provider &&
cinemaWorld.Movies.map((movie, index) => {
return (
<div className="movies" key={index}>
<h6> Price: ${movie.Price}</h6>
</div>
);
})}
但同样,我只需要将这家电影院的价格显示在同一个 h6 标签上。 或者采用不同的方法(例如合并变量)会更直观吗?
理想的最终结果代码 return 是这样的:
return (
<div className="movies" key={index}>
<h3>{movie.Title}</h3>
<img src={movie.Poster} alt={movie.Title} />
<h5>{movie.Actors} </h5>
<h6> FilmWorld Price: ${movie.Price}
CinemaWorld Price: ${movie.Price}</h6>
<hr />
</div>
);
})}
因此该页面将显示电影名称、电影海报图片、演员列表以及放映该电影的两家电影院的价格比较。 我在这些变量中存储来自两个不同 API 的数据。
我会使用 memo hook 来创建你想要的数据结构
const movies = useMemo(() => {
if (!filmWorld.Provider) return [];
return filmWorld.Movies.map((movie, index) => ({
...movie,
cinemaWorldPrice: cinemaWorld.Provider && cinemaWorld.Movies[index]?.Price,
}));
}, [filmWorld, cinemaWorld]);
这会从 cinemaWorld.Movies
中获取相应的索引(条件是 cinemaWorld.Provider
)。
现在您可以迭代 movies
数组
{
movies.map((movie, index) => (
<div className="movies" key={index}>
<h3>{movie.Title}</h3>
<img src={movie.Poster} alt={movie.Title} />
<h5>{movie.Actors} </h5>
<h6>
Price: ${movie.Price}
CinemaWorld Price: ${movie.cinemaWorldPrice}
</h6>
<hr />
</div>
));
}