inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 스터디 클럽 3기 풀스택] 1주차 발자국

codestudy
0

Next.js와 Supabase를 활용한 Todo 애플리케이션 개발

강의 수강 내용 요약

이번 주에는 Next.js 14, TypeScript, Material Tailwind, Supabase를 연동하여 Todo 리스트 애플리케이션을 만드는 방법을 학습했습니다.

사용한 기술 스택과 그 이유

1. Supabase

2. Next.js

3. Material Tailwind

4. React Query (Tanstack Query)

할일 CRUD 기능 구현 (feat. Server Action)

이 과정에서 Material Tailwind 컴포넌트의 타입 불일치 문제로 여러 타입 에러가 발생했습니다. 이를 해결하기 위해 래퍼 컴포넌트 패턴을 적용했습니다:

// 커스텀 IconButton 래퍼 컴포넌트
interface IconButtonProps {
  onClick: () => void | Promise<void>;
  children: ReactNode;
  className?: string;
}

function IconButton({ onClick, children, className }: IconButtonProps) {
  return (
    <MTIconButton
      onClick={onClick as any}
      className={className}
      {...({} as any)} // 타입 에러 방지
    >
      {children}
    </MTIconButton>
  );
}

또한 todoQuery와 mutation을 활용하여 데이터 관리를 구현했습니다:

const updateTodoMutation = useMutation({
  mutationFn: () =>
    updateTodo({
      id: todo.id,
      title,
      completed,
    }),
  onSuccess: () => {
    setIsEditing(false);
    queryClient.invalidateQueries({
      queryKey: ["todos"],
    });
  },
});

queryClient는 쿼리 관련된 요청의 캐시 역할을 해주어 React Query가 캐시를 정상적으로 동작하게 해줍니다.

학습 내용 회고

아쉬웠던 점

보완하고 싶은 점

풀스택 supabase next.js materialtailwind

답변 0