24. 07. 02 TIL

next.js로 코드 짜는 과제 시작!

 

일단 가이드를 따라하면서 했다.

 

먼저 api 폴더를 만들어 준 뒤에 컴포넌트를 만드는데

 

서버, 클라이언트 컴포넌트를 나눠줘야 한다.

 

나누는데 조금 헷갈리긴 했는데

 

일단 useEffect, useState를 써줬기 때문에 use client를 넣어줘야 했고,

 

  const [pokemons, setPokemons] = useState<Pokemon[]>([]);

  useEffect(() => {
    const getPokemons = async () => {
      const res = await fetch('http://localhost:3000/api/pokemons');
      const data = await res.json();
      setPokemons(data);
    };
    getPokemons();
  }, []);

  return (
    <div className="grid grid-cols-6 gap-4 mt-10">
      {pokemons.map((pokemon) => {
        return (
            <div> {pokemon.korean_name}</div>
          </div>
        );
      })}
    </div>
  );

이렇게! 써줬다. 처음엔 use Effect 내부 내용 일부를 서버 컴포넌트에 넣어줘야하나 싶어서 좀 시도를 해봤는데 잘 안 됐고... 그냥 클라이언트 컴포넌트에 저렇게 다 넣었다. 

 

 

그리고 클라이언트 컴포넌트는

const PokemonListPage = () => {
  return (
    <div className="container mx-auto text-center p-3">
      <div className="text-5xl">포켓몬 도감</div>
      <PokemonsComponents />
    </div>
  );
};

이렇게 더 깔끔하게 분리!!

 

보기 아주 편하다.

 

타입은 따로 파일을 만들어서 분리하고 import 해줬다.

 

사실 이번 과제는 작성해놓고 보니 간단한 편인 것 같아서 진도가 쭉쭉 나갔다!

'TIL' 카테고리의 다른 글

24. 07. 04 TIL  (0) 2024.07.04
24. 07. 03 TIL  (0) 2024.07.03
Next.js 프리렌더링과 최적화 정리  (0) 2024.07.01
24. 06. 28 TIL  (0) 2024.06.28
24. 06. 27 TIL  (0) 2024.06.27