11.5 Channel 노래,앨범 section 강의중
안녕하세요 선생님 ㅎ
channel쪽 진행하고 있었는데 앨범 밑에 PlayListCarousel이
크기가 이상하게 나오네여 ㅠㅠ 코드를 다똑같이 써도 안되서 질문드립니다!

channel/[id]/page.tsx
import HeaderBgChanger from "@/components/HeaderBgChanger";
import PagePadding from "@/components/PagePadding";
import PlayListCarousel from "@/components/PlayListCarousel";
import SongCardRowExpand from "@/components/SongCardRowExpand";
import DarkButton from "@/components/elements/DarkButton";
import WhiteButton from "@/components/elements/WhiteButton";
import { getChannelById } from "@/lib/dummyData";
import { getRandomElementFromArray } from "@/lib/utils";
import { permanentRedirect } from "next/navigation";
import React from "react";
import { FiMusic, FiShuffle } from "react-icons/fi";
interface ChannelPageProps {
params: {
id: string;
};
}
const page = async (props: ChannelPageProps) => {
const channel = await getChannelById(Number(props.params.id));
if (!channel) permanentRedirect("/");
const imageSrc = getRandomElementFromArray(channel.songList)?.imageSrc;
return (
<PagePadding>
<HeaderBgChanger imageSrc={imageSrc} />
<div className="mt-[150px]"></div>
<section>
<div className=" text-[28px] font-bold">{channel.name}</div>
<article className="mt-4 lg:hidden">
<div>
<DarkButton
className={"w-[230px] flex justify-center"}
label={"구독중 99만"}
/>
</div>
<div className="flex flex-row gap-4 mt-4">
<WhiteButton
label={"셔플"}
icon={<FiShuffle size={16}></FiShuffle>}
/>
<WhiteButton label={"뮤직 스테이션"} icon={<FiMusic size={16} />} />
</div>
</article>
<div className="hidden lg:flex flex-row items-center gap-4 text-[14px] mt-4">
<WhiteButton
label={"셔플"}
icon={<FiShuffle size={16}></FiShuffle>}
/>
<WhiteButton label={"뮤직 스테이션"} icon={<FiMusic size={16} />} />
<DarkButton
className={"w-[230px] flex justify-center"}
label={"구독중 99만"}
/>
</div>
</section>
<section className="mt-[80px]">
<div className=" text-[28px] font-bold">노래</div>
<div className="mt-[20px]">
<ul className="flex flex-col gap-2">
{channel.songList.map((song, key) => {
return <SongCardRowExpand song={song} key={key} />;
})}
</ul>
</div>
</section>
<section className="mt-[80px]">
<div className=" text-[28px] font-bold">앨범</div>
<PlayListCarousel playlistArray={channel.playlistArray} />
</section>
<section className="mt-[80px]"></section>
</PagePadding>
);
};
export default page;PlayListCarousel.tsx
import { Playlist } from "@/types";
import React from "react";
import {
Carousel,
CarouselContent,
CarouselItem,
CarouselNext,
CarouselPrevious,
} from "@/components/ui/carousel";
import PlayListCard from "./PlayListCard";
interface PlayListCarouselProps {
title?: string;
subTitle?: string;
Thumbnail?: React.ReactNode;
playlistArray?: Playlist[];
}
const PlayListCarousel: React.FC<PlayListCarouselProps> = ({
title,
subTitle,
Thumbnail,
playlistArray,
}) => {
return (
<div className="w-full">
<Carousel>
<div className="flex flex-row justify-between items-end my-2">
<article className="flex flex-row gap-3">
{Thumbnail}
<div className="flex flex-col justify-center">
<div>
{subTitle && (
<div className=" text-neutral-500">{subTitle}</div>
)}
</div>
<div className="text-[34px] font-bold leading-[34px] ">
{title}
</div>
</div>
</article>
<div className="relative left-[-45px]">
<div className="absolute bottom-[20px]">
<CarouselPrevious className="right-2" />
<CarouselNext className=" left-2" />
</div>
</div>
</div>
<CarouselContent className="mt-4">
{playlistArray?.map((playlist, index) => {
return (
<CarouselItem
key={index}
className="basis-1/2 md:basis-1/3 lg:basis-1/4 xl:basis-1/5"
>
<PlayListCard playlist={playlist} />
</CarouselItem>
);
})}
</CarouselContent>
</Carousel>
</div>
);
};
export default PlayListCarousel;
Answer 1
1
안녕하세요.!
UI화면을 보니, 상위 컴포넌트의 너비값에 문제가 있는것 같습니다.
1.아래 컴포넌트를 살펴보면서 디버깅을 해주세요.!
https://github.com/dodokyo/yt-music-clone/blob/main/components/PagePadding.jsx
https://github.com/dodokyo/yt-music-clone/blob/main/app/channel/%5Bid%5D/layout.tsx
높은 확률로 layout 컴포넌트에서 w-full 이 빠졌을까 예측해봅니다.
2.크롬 개발자 도구를 통해서 어떤 요소에서 너비가 줄어들었는지 알면 좋습니다.
0
확인 결과
layout
import Header from "@/components/Header";
import React from "react";
const layout = ({ children }: { children: React.ReactNode }) => {
return (
<div className="w-full h-full">
<Header>{children}</Header>
</div>
);
};
export default layout;pagepadding
import React from "react";
const PagePadding = ({ children }) => {
return (
<div className=" mx-auto px-[10px] py-2 lg:px-[100px]">{children}</div>
);
};
export default PagePadding;코드에서 이상은 없는데
2.지금 개발자 도구를 통해서 보고있는데 테일윈드라 가독성이 좀 떨어져서 오래걸리네여 ㅠㅠ
1
안녕하세요 도도님!
해결했습니다!
원인이 Header.jsx에서 96줄
<section className="relative">{children}</section>relative 부분이 absolute로 되어있었습니다! 감사합니다
4.6강 초기 로딩 속도 케이스 비교
0
85
2
Sidebar & Header 컴포넌트 등 레이아웃 설정 방식
0
89
3
문의드립니다.
0
145
3
Vercel signup이 안되요,, 계속 제 깃허브 계정은 추가 인증이 필요하다며 registration@vercel.com에 문의를 하라고 하네요,,, 이럴땐 진행을 어찌해야할까요,,,
1
101
2
에러, 로딩 내용 페이지를 모든 페이지에 다 만드는 이유가 따로 있나요?
2
158
3
3.2, 3.3 화면에 아무것도 나오지 않고 있습니다!
0
210
3
코드가 왜 그런지 모르겠는데, 이럴땐 어떻게 공부해야하나요?
1
221
3
강의외 복잡한 ui 입력폼 관련 질문 있습니다
1
218
2
npx랑 yarn이랑 같이 써도 되나요?
0
437
2
article / section 태그에 관해
0
179
1
카테고리 변경 시 이미지 로딩
1
191
2
next zustand 사용 시 문의
0
474
2
component 파일에서는 tsx파일이 아니라 jsx 파일을 쓰는 이유를 알 수 있을까요?
1
175
2
versel 을 통한 배포를 하는 것과 (홈서버 + 클라우드 플래어 프록시)를 하는 것을 비교해주실 수 있나요?
1
175
1
선생님 죄송한대
1
152
1
깃 push가 안되서 ssh를 한참해메고 있습니다. ㅠㅠ
1
143
1
Chapter 7 영상 화면이 안보입니다.
0
273
2
오류발생 문제입니다.
1
229
1
질문있습니다.
1
181
1
소스 수정 후 자동 컴파일 문의드립니다.
1
281
2
정적배포
0
196
1
zustand 상태관리
0
333
1
state에서 buffer랑 time이 안 나옵니다
0
199
2
components 들은 jsx 로 만드신 이유
0
311
3

