[React] React에서 `key={index}`를 피해야 하는 이유 (feat. 더 나은 대안)
·
개발 분야 (Development Area)/프론트엔드 (Frontend)
이번 글에서는 React의 렌더링 생명주기(Lifecycle)와 CSS 애니메이션 예시를 추가하여 key={index}가 실제 애플리케이션에서 어떻게 예기치 않은 문제를 일으키는지 구체적으로 보여드리겠습니다.React key 심층 분석: 당신이 index를 key로 써서는 안 되는 진짜 이유"React 리스트 렌더링 시 key prop에 index를 사용하지 마세요." 이 조언은 React 개발자라면 누구나 한 번쯤 들어봤을 법한, 일종의 '관습'과도 같습니다. 하지만 왜 안되는 걸까요? '그냥 쓰면 안 좋다더라' 수준을 넘어, 그 내부 동작 원리와 실제 애플리케이션에 미치는 영향을 깊이 있게 파헤쳐 보겠습니다.이 글에서는 컴포넌트의 생명주기(Lifecycle)와 실제 DOM 조작, 그리고 애니메이션 깨..
[사이드프로젝트] React 앱에서 카카오 소셜 로그인 구현하기
·
개발 단계 (Development Stage)/개발 (Development)
안녕하세요! 오늘은 React 애플리케이션에서 카카오 소셜 로그인을 구현하는 방법에 대해 공유하려고 합니다. 프로젝트에서 카카오 로그인을 적용하면서 경험한 내용을 바탕으로 작성했습니다.목차준비 사항카카오 개발자 계정 및 앱 설정프로젝트에 카카오 SDK 추가하기카카오 로그인 버튼 컴포넌트 구현인증 코드 처리를 위한 콜백 페이지 구현라우팅 설정백엔드 연동발생 가능한 문제 및 해결 방법마치며1. 준비 사항카카오 소셜 로그인을 구현하기 위해 다음과 같은 기술 스택을 사용했습니다.ReactTypeScriptViteReact RouterAxios2. 카카오 개발자 계정 및 앱 설정먼저, 카카오 개발자 사이트에 접속하여 계정을 생성하고 앱을 등록합니다.앱 등록 및 설정 단계: 카카오 개발자 사이트에 로그인하고 "내 ..
[사이드 프로젝트] 회원 탈퇴 기능 구현을 통해 배운 React 상태 관리와 사용자 경험 개선 이야기
·
개발 단계 (Development Stage)/개발 (Development)
안녕하세요.오늘은 최근 진행한 회원 탈퇴 기능 구현 과정에서 경험한 기술적 고민과 해결 과정, 그리고 그 속에서 배운 점들을 공유드리고자 합니다. 프로젝트 배경처음 회원 탈퇴 기능을 구현하라는 요청을 받았을 때, 단순히 API 연동만 하면 되는 간단한 작업이라 생각했습니다.하지만 실제 구현 과정에서 마주한 다양한 고민들이 있었습니다. :-)초기 요구사항 분석회원 탈퇴 전 주의사항 안내비밀번호 재확인진행 중인 예약이 있는 경우 탈퇴 제한이러한 요구사항들을 단순히 기능적으로만 구현하는 것이 아니라, 어떻게 하면 사용자에게 더 나은 경험을 제공할 수 있을지 고민했습니다.기술적 도전과 해결 과정1. 상태 관리의 진화처음에는 이렇게 단순한 로컬 상태로 시작했습니다.const Withdrawal = () => { ..
React useEffect 완벽 가이드: 햄버거 메뉴 구현에서 시작된 여정 (SSR 환경에서의 활용과 최적화)🚀
·
개발 분야 (Development Area)/프론트엔드 (Frontend)
들어가며: useEffect와 SSR의 만남 🌱  최근 Next.js를 활용한 프로젝트에서 햄버거 메뉴를 구현하던 중 흥미로운 문제에 직면했습니다. 단순해 보이는 햄버거 메뉴 기능이었지만, Next.js의 서버 사이드 렌더링(SSR) 환경에서 예상치 못한 도전 과제를 마주하게 되었죠.처음에는 단순히 다음과 같이 구현했습니다:const [isMenuOpen, setIsMenuOpen] = useState(false);const toggleMenu = () => { setIsMenuOpen(!isMenuOpen);};하지만 이 코드는 SSR 환경에서 문제를 일으켰고, 결국 다음과 같이 수정해야 했습니다:"use client";import { useState, useEffect } from "react";..
[YDKJSY]🛡️ 최소 노출: JS 스코프와 클로저 이해하기
·
학습 & 성장 (Learning & Growth)/개발 공부 (Development Study)
지금까지 우리는 스코프와 변수가 어떻게 작동하는지에 대해 설명하는 데 집중했습니다. 이제 이러한 기초가 확고히 자리잡았으니, 프로그램 전반에 걸쳐 적용되는 결정과 패턴에 대해 더 깊이 생각해볼 시간입니다. 본 글에서는 채권의 원리와 더 복잡한 예제를 통해 이를 설명하겠습니다.🔍 최소 노출함수가 자체 스코프를 정의한다는 점은 이해가 됩니다. 그렇다면 왜 블록도 스코프를 생성해야 할까요? 소프트웨어 공학에서는 "최소 권한 원칙"(POLP)이라는 기본 규율을 설명합니다. 현재 논의와 관련된 이 원칙의 변형은 "최소 노출"(POLE)입니다.📏 POLP와 POLEPOLP는 소프트웨어 아키텍처에 대한 방어적 자세를 표현합니다. 시스템의 구성 요소는 최소한의 권한, 접근, 노출로 작동하도록 설계되어야 합니다. 이렇게..
[React] 🛑 React에서 key={index} 사용의 위험성: 쉽게 이해하는 key 값과 React Reconciliation
·
개발 분야 (Development Area)/프론트엔드 (Frontend)
React로 웹 애플리케이션을 만들다 보면, 여러 개의 데이터를 화면에 표시해야 하는 경우가 많습니다. 예를 들어, 할 일 목록을 보여주거나 상품 목록을 나열하는 경우가 그렇죠. 이때 React 개발자들은 map 함수를 사용하여 데이터를 하나씩 꺼내 화면에 보여주는 방식을 자주 사용합니다.이때 중요한 것이 바로 key prop입니다. React는 화면을 효율적으로 업데이트하기 위해 key prop을 사용하는데, key={index}처럼 배열의 인덱스를 key 값으로 사용하면 예상치 못한 문제가 발생할 수 있습니다.이 글에서는 React의 reconciliation 알고리즘과 key 값의 역할을 바탕으로, 왜 key={index}가 문제인지, 그리고 안전하게 리스트를 렌더링하는 방법은 무엇인지 자세히 알아..
vanillinav
'react' 태그의 글 목록