deo2kim
맞왜틀
deo2kim
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
deo2kim

맞왜틀

카테고리 없음

[nextjs] 특정 컴포넌트를 정확히 클라이언트에서만 렌더링하기

2023. 6. 7. 20:24
반응형

useEffect

useEffect는 클라이언트에서만 실행하도록 되어있다.

 

import { useEffect, useState } from 'react';
import 대충 클라이언트에서만 실행할 수 있는 컴포넌트 from 'ASDF';

export default function Test() {
	const [isClient, setIsClient] = useState(false);
    
    useEffect(() => {
    	setIsClient(true)
    }, [])
    
    return (
    	<div>
        	{isClient && <대충 클라이언트에서만 실행할 수 있는 컴포넌트/>}
        </div>
    )
}

 

서버 사이드에서는 useEffect가 실행되지 않으니 isClient가 항상 false이고, 대충 클라이언트에서만 실행할 수 있는 컴포넌트가 실행되지 않는다.

 

typeof

서버사이드에서는 window 객체가 없으므로 해당 객체를 통해 판별한다

import 대충 클라이언트에서만 실행할 수 있는 컴포넌트 from 'ASDF';

export default function Test() {
	const isClient = typeof window === "undefined"
    
    return (
    	<div>
        	{isClient && <대충 클라이언트에서만 실행할 수 있는 컴포넌트/>}
        </div>
    )
}

 

동적 컴포넌트 로딩

nextjs의 dynamic을 활용

import dynamic from 'next/dynamic';

const 대충 클라이언트에서만 실행할 수 있는 컴포넌트 = dynamic(
	() => import ('ASDF'),
    { ssr: false }
);

export default function Test() {
    return (
    	<div>
        	<대충 클라이언트에서만 실행할 수 있는 컴포넌트/>
        </div>
    )
}
반응형
저작자표시 비영리 변경금지 (새창열림)
    deo2kim
    deo2kim
    코딩 기록하기

    티스토리툴바