본문 바로가기

반응형

커스텀 훅

(4)
[리팩토링] Next 카카오 맵 폴리곤 렌더링 리팩토링 - 커스텀 훅, 유틸 함수 구조 개선 리팩토링 전  📖리팩토링 전 코드는 컴포넌트 내부에 복잡한 로직들이 섞여있어 가독성과 유지보수성이 떨어졌습니다.  Next 카카오 맵 행정구역 나누기시도 별로 행정구역을 나누는 작업을 진행한 내용입니다. 행정구역 데이터 파일 📖SHP 파일시도, 시군구, 읍면동, 리 별로 데이터가 있어 원하는 파일을 다운 받으면 됩니다.  대한민국 최신mingos-habitat.tistory.com 특히 폴리곤을 그리는 `좌표 데이터 처리`와 `mouseover``mouseout` 이벤트 처리 로직이 분리되어 있지 않고 중복되어 있어서 재사용성이 부족했습니다. ✨그래서 리팩토링 하기로 결정을 했습니다! ✨  리팩토링 후 📖"use client";const KakaoMapLoader = () => { useKakao..
[개인 프로젝트] MBTI 테스트 - useQuery, useMutation 커스텀 훅 리팩토링 리팩토링 이유 📖Tanstack Query를 사용하면서 여러 컴포넌트에서 중복되는 로직이 발생해 유지보수가 어렵다는 생각이 들었습니다. 그래서 `useQuery`와`useMutation`을 커스텀 훅으로 리팩터링 하고 `queryKey`를 상수화 해 코드의 가독성과 재사용성을 높인 방법에 대해서 공유해보려고 합니다. 기존 코드 📖useQuery, useMutation기존에는 `useQuery`와 `useMutation`을 각 API 호출마다 직접 사용했는데, 여러 컴포넌트에서 중복되는 로직이 많아지고 가독성이 떨어 지는 문제가 있었습니다.const { data: results, isLoading } = useQuery({ queryKey: ["results"] queryFn: getTestResu..
[팀 프로젝트] 방콕스타일 - 검색 기능 구현 (Debounce) Debounce란? 📖 연속적으로 발생한 이벤트를 하나로 처리하는 방식입니다. 마지막으로 실행된 함수만을 실행합니다. 예를 들어 input에 `hello`를 타이핑하려고 할 때 콘솔을 출력해 보면hhehelhellhello이렇게 한 글자씩 출력이 되는 걸 확인할 수 있습니다. 반면, Debounce delay시간을 1초로 설정할 경우 1초 동안 기다렸다가 화면에 반영하기 때문에 여러 번 출력되지 않습니다.hello 프로젝트 적용 📖useDebounce 커스텀 훅 사용import React, { useEffect, useState } from "react";const useDebounce = (value, delay = 200) => { const [debounceValue, setDebounceVa..
[트러블 슈팅] 커스텀 훅의 업데이트가 반영되지 않을 때 [개인 프로젝트] 올림픽 메달 트래커를 진행하면서 발생한 트러블 슈팅에 대해 정리해 봤습니다.커스텀 훅의 상태가 업데이트 됐는데 컴포넌트가 렌더링이 되지 않음발생한 오류 🔥국가 추가, 수정, 삭제를 커스텀 훅으로 따로 관리하고 해당 기능이 필요한 곳에서 `useCountry` 훅을 호출하는 방식으로 코드를 수정했는데 국가 추가를 눌렀을 때 `InputGroup` 컴포넌트에서 발생한 `addCountry` 함수는  잘 동작하지만 `MedalList` 컴포넌트에서 리스트가 보이지 않는 문제 발생. 해결 과정 🔎https://react.dev/learn/reusing-logic-with-custom-hooks Reusing Logic with Custom Hooks – ReactThe library for..