use client에 대하여
아직까지도 헷갈리는 클라이언트와 서버 컴포넌트...
use client를 사용하면 해당 컴포넌트는 클라이언트 컴포넌트이다??
예시 코드
'use client';
import { PageLayout } from '@/components/PageLayout';
import SelectHeader from '@/components/SelectHeader';
import useWorkspaceId from '@/hooks/useWorkspaceId';
import useWorkspaceList from '@/hooks/useWorkspaceList';
import useUserStore from '@/store/userStore';
import { StrictPropsWithChildren } from '@/types/common';
const HomeLayout = ({ children }: StrictPropsWithChildren) => {
const workspaceId = useWorkspaceId();
const userId = useUserStore((state) => state.userId);
const { workspaceInfo, isPending, isError } = useWorkspaceList(workspaceId, userId);
if (isError || !workspaceInfo) {
return (
<PageLayout title="" showTopBar={false}>
<></>
</PageLayout>
);
}
if (isPending) {
return (
<PageLayout title="" showTopBar={false}>
<></>
</PageLayout>
);
}
return (
<PageLayout title="" showTopBar={false}>
<SelectHeader workspaceList={workspaceInfo.workspaceListData} workspaceId={workspaceId} />
{children}
</PageLayout>
);
};
export default HomeLayout;
결과
use client를 사용하면 해당 컴포넌트의 자식 컴포넌트는 클라이언트 컴포넌트이다??
예시 코드
import HomeMemberCard from '../_components/HomeMemberCard';
import MemberList from '../_components/MemberList';
const Homepage = aysnc () => {
console.log(123)
return (
<div className="px-[16px] mt-[26px]">
<HomeMemberCard />
<MemberList />
</div>
);
};
export default Homepage;
결과
오 그럼 Nextjs가 자동으로 해주니까 use client를 다 사용하면 안되나??
NO
이다.예시 코드
위의 Homepage 코드에서 'use client'를 사용한다.
결과