Dandy Now!
  • [ 언어·프레임워크/React.js ]
    React 로직 재사용 패러다임의 전환: HOC와 Hooks 분석
    2026-01-06 09:26:34
    React 로직 재사용 패러다임의 전환: HOC와 Hooks 분석1. 고차 컴포넌트 (Higher-Order Component, HOC)1-1. HOC의 개념과 작동 원리고차 컴포넌트는 컴포넌트를 인자로 받아 새로운 기능을 주입하여 새로운 컴포넌트를 반환하는 함수이다.이는 React의 API가 아닌, 컴포넌트의 구성적 특성을 활용한 디자인 패턴에 해당한다.수학적 모델로 표현하면 다음과 같다.주로 횡단 관심사(Cross-cutting Concerns)인 인증, 로깅, 데이터 페칭 등을 분리하여 재사용할 때 사용한다.1-2. 코드 구현 예시인증 여부에 따라 컴포넌트 렌더링을 제어하는 HOC의 구조는 다음과 같다.import React from "react";const withAuth = (WrappedCom..
  • [ 언어·프레임워크/React.js ]
    [React.js] Spring Boot와 연동 시 `Invalid URL` 오류 해결기(리액트 프로젝트 중단점 설정)
    2025-06-18 21:44:01
    Spring Boot와 React 연동 시 Invalid URL 오류 해결기Spring Boot 백엔드와 React 프런트엔드를 연동하는 과정에서 SyntaxError: Failed to execute 'open' on 'XMLHttpRequest': Invalid URL이라는 오류를 마주했고, 이를 해결한 과정을 공유하고자 한다. 이 글이 비슷한 문제로 고민하는 분들에게 도움이 되기를 바란다.1. 문제의 시작: Cannot read properties of undefined와 서버 무응답React 애플리케이션에서 로그인 요청을 보냈을 때, 브라우저 콘솔에는 Cannot read properties of undefined (reading 'data')라는 오류가 나타났다. 동시에 백엔드 Spring Bo..
  • [ 언어·프레임워크/React.js ]
    [React.js] 메모이제이션 완벽 가이드: memo, useCallback, useMemo와 Profiler 활용
    2025-05-25 21:09:54
    React 메모이제이션 완벽 가이드: memo, useCallback, useMemo와 Profiler 활용React 애플리케이션의 성능 최적화는 사용자 경험을 크게 좌우하는 중요한 요소이다. 특히 컴포넌트의 불필요한 리렌더링은 애플리케이션의 성능을 저하시키는 주요 원인 중 하나이다. 이 글에서는 React의 메모이제이션 기법들과 Profiler를 활용한 성능 분석 방법을 실제 예제를 통해 살펴본다.React Profiler 소개React Profiler는 컴포넌트 렌더링 성능을 측정하고 분석할 수 있는 도구이다. 개발자 도구의 Profiler 탭뿐만 아니라, 코드 내에서 직접 사용할 수 있는 Profiler 컴포넌트도 제공한다.Profiler 컴포넌트 사용법import { Profiler } from ..
  • [ 언어·프레임워크/React.js ]
    [React.js] `useEffect`와 `useLayoutEffect`의 차이: 깜박임 현상과 중간 값 노출
    2025-05-23 01:18:24
    React에서 useEffect와 useLayoutEffect의 차이: 깜박임 현상과 중간 값 노출React 애플리케이션을 개발하다 보면 useEffect와 useLayoutEffect라는 두 가지 훅을 자주 만나게 된다. 두 훅 모두 컴포넌트 렌더링 후 특정 작업을 수행하는 데 쓰이지만, 실행 시점에 미묘하지만 중요한 차이가 있다. 이러한 차이는 특히 상태값이 연속적으로 빠르게 변경될 때 "화면 깜박임"이나 "중간 값 노출"과 같은 시각적인 현상으로 나타난다.이번 포스팅에서는 간결한 예제를 통해 두 훅의 동작 방식과 그 차이를 명확하게 이해한다.useEffect와 useLayoutEffect는 무엇인가?useEffect는 React의 모든 DOM 업데이트가 완료된 후, 그리고 브라우저가 화면을 그린 후..
  • [ 언어·프레임워크/React.js ]
    [React.js] 네이버 지도 API 마커 중앙 정렬과 레이어 제어
    2025-05-14 19:55:18
    네이버 지도 API 마커 중앙 정렬과 레이어 제어웹 인터페이스를 개발할 때 요소들을 정확한 위치에 배치하고, 사용자와의 인터랙션에 따라 요소들의 표시 순서를 바꾸는 것은 중요한 사용자 경험 요소이다. 이번 글에서는 CSS를 사용한 절대 위치 요소의 정밀한 중앙 정렬 기법과, React 컴포넌트 상태에 따라 네이버 지도 마커의 표시 레이어(z-index)를 동적으로 변경하는 방법에 대해 이야기해보겠다.1. 절대 위치 요소의 정확한 중앙 정렬 기법CSS에서 position: absolute와 left: 50% 또는 right: 50%를 함께 사용하여 요소를 가로 중앙에 배치하려 할 때, 요소가 화면 중앙에서 미묘하게 왼쪽이나 오른쪽으로 치우치는 경험을 할 수 있다. 이는 left: 50%가 요소의 왼쪽 가장..
  • 게시글 대표 이미지 썸네일 주소
    [ 언어·프레임워크/React.js ]
    [React.js] Naver 지도 resize 이벤트 오류 해결하기 (`__event_relations__` 에러)
    2025-04-30 19:25:16
    React에서 Naver 지도 resize 이벤트 오류 해결하기 (__event_relations__ 에러)React 환경에서 네이버 지도를 사용할 때, 특정 상태(hideStateMenu 등)가 변경됨에 따라 지도의 크기가 변경될 때 resize 이벤트를 수동으로 트리거해야 하는 경우가 있다. 이 과정에서 간헐적으로 Cannot read properties of null (reading '__event_relations__') 와 같은 오류가 발생할 수 있다. 이 글에서는 해당 오류의 원인을 분석하고 안정적으로 해결하는 방법을 제시한다.1. 문제 원인 분석이 오류는 주로 hideStateMenu와 같은 상태 값이 변경될 때, naverMap.current (네이버 지도 인스턴스 참조)에 대해 resiz..
  • [ 언어·프레임워크/React.js ]
    [React.js] React Hooks와 컴포넌트 생명주기, 함수 컴포넌트의 진화 살펴보기
    2025-04-25 12:52:01
    React Hooks와 컴포넌트 생명주기, 함수 컴포넌트의 진화 살펴보기React 개발이 점차 함수형 컴포넌트 중심으로 옮겨가면서, 기존 클래스 컴포넌트에서만 가능했던 상태 관리나 생명주기 메서드 활용이 어떻게 함수형 컴포넌트에서도 가능해졌을까? 그 핵심에는 바로 React Hooks가 있다. 이번 글에서는 React Hooks가 무엇인지, 왜 'Hook'이라고 불리며, React 컴포넌트의 생명주기 개념과 Hooks가 어떻게 연결되는지 깊이 있게 살펴보겠다.1. 왜 React Hooks인가? 함수 컴포넌트의 새로운 가능성React의 초기 함수형 컴포넌트는 단순히 props를 받아 UI를 렌더링하는 역할에 주로 사용되었다. 상태를 관리하거나 컴포넌트가 화면에 나타나거나 사라질 때 특정 작업을 수행하는 등..
  • [ 언어·프레임워크/React.js ]
    [React.js] Input 성능 최적화: 디바운싱과 스로틀링으로 불필요한 리렌더링 줄이기
    2025-04-24 12:58:59
    React Input 성능 최적화: 디바운싱과 스로틀링으로 불필요한 리렌더링 줄이기React 개발에서 사용자 입력 필드의 상태를 관리하는 것은 매우 기본적인 작업이다. 대부분의 경우 useState 훅을 사용하여 input 요소의 value와 onChange 핸들러를 연결하는 방식을 사용한다.import React, { useState } from 'react';function SimpleInput() { const [value, setValue] = useState(''); const handleChange = (event) => { setValue(event.target.value); // 키를 입력할 때마다 이 코드가 실행되는 것이다. }; return ( );}이 방식은 사용..