ํฐ์คํ ๋ฆฌ ๋ทฐ
Issue
์ Carousel Slide ๊ธฐ๋ฅ์ ํด๋น Main Page ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ Page ๋ด์์๋ ์ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฝํ ํ์๊ฐ ์์์ ํ์ธํ์๋ค.
Carousel Slide ๊ธฐ๋ฅ์ด ๋ฆฌ์คํธ ํ์์์ ์ ๋๋ก ๋์ํ๊ธฐ ์ํด์๋, ํด๋น ๋ฆฌ์คํธ ์์๋ค์ด Wrapper์ธ Carousel Slide ํ๊ทธ ๋ด๋ถ๋ก ๋ค์ด๊ฐ์ผ ํ๋ค.
Solution
์ฐ์ ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฆฌ์คํธ ์์๋ฅผ ๋์ ์ผ๋ก ์์ฑํด ์ฃผ๋ MovieList ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ์ฃผ์๋ค.
(Feed Layout ๋ํ ๋์ค์ ์ฌํ์ฉํ๊ธฐ ์ํด Presentation Component๋ก ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ์ฃผ์๋ค)
render() {
let { curFeedsType, curMovieListData } = this.state;
if (this.isFeedsType(curFeedsType)) {
return curMovieListData.map(({ id, movieTitle, movieTear, url }) => {
return (
<SoleFeedLayout
key={id}
movieTitle={movieTitle}
movieTear={movieTear}
url={url}
/>
);
});
}
( ... )
}
๋ค์์ผ๋ก MovieList ์ปดํฌ๋ํธ์์ ๋๋๋ง ๋ Feed List์ Carousel Slide ๊ธฐ๋ฅ์ ์ ์ฉํด์ฃผ๊ธฐ ์ํด์ ๊ด๋ จ ๋์์ ๋ด๋นํ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋์ ๊ฐ์ด ์ปดํฌ๋ํธ๋ก ๋ฐ๋ก ๋ง๋ค์ด ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ MovieList ์ปดํฌ๋ํธ๋ฅผ Carousel Slide ๋ด๋ถ์์ ๋์ํ ์ ์๋๋ก this.props.children์ ์ฌ์ฉํ์๋ค.
(this.props.children์ MovieList Component๋ฅผ ๋ฐ์ธ๋ฉํ๊ณ ์๋ค)
render() {
let { curTranslateX, curScrollLeftPos } = this.state;
let { children } = this.props;
return (
<>
<div className="feedsCarousel" onScroll={this.moveToX}> // moveToX() ๋ฉ์๋๋ Slide Swipping์ด ๋๋๋ก ๋์ํ๋ค.
<ul
className="carouselSlider"
style={{ transform: `translateX(${curTranslateX}%)` }}
>
{children}
</ul>
</div>
( ... )
</>
);
}
์ต์ข ์ ์ผ๋ก ์ต์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์ ๋ ์ปดํฌ๋ํธ๋ฅผ importํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์ฌ ๊ณ์ธตํ ์์ผฐ๋ค.
render() {
let { soleFeedsData, collectionFeedsData } = this.state;
return (
<article className="feeds">
{soleFeedsData.map(({ category, movieList }, index) => {
return (
<section key={index} className="feedsContainer">
<div className="feedsCategoryNameContainer">
<p className="feedsCategoryName">{category}</p>
</div>
<CarouselSlide> // Carousel Slide ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์ถ์ list ํ์์ ๋ชจ๋ ์ ์ฉํ ์ ์์
<MovieList type="movieListType" movieListData={movieList} /> // this.props.children ๋ฐ์ธ๋ฉ ๊ฐ๋ฅ
</CarouselSlide>
</section>
);
})}
( ... )
</article>
);
}
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํน์ ๊ฐ์ Entry ์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ_Infinite Scroll (0) | 2021.11.14 |
---|---|
Type ๊ฐ์ ๋ฐ๋ผ ์กฐ๊ฑด๋ถ ๋๋๋ง_getDerivedStateFromProps (0) | 2021.11.07 |
๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ(how / what) (0) | 2021.10.28 |
๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ_JSX ์์์ Inline-style์ ๋ํด (0) | 2021.10.28 |
๋ฆฌ์กํธ ๋ฉ์๋ ๋ด this ๋ฐ์ธ๋ฉ ๋ฌธ์ (0) | 2021.10.24 |