[React] 리액트 생명주기
·
JAVASCRIPT
들어가며리액트는 UI (사용자 인터페이스)를 구축하기 위한 인기 있는 라이브러리 중 하나로, 컴포넌트 기반 설계가 핵심입니다. 리액트 컴포넌트는 생명주기라는 개념을 통해 생성, 업데이트, 제거 과정을 관리하며, 이는 애플리케이션의 동작 방식에 큰 영향을 미칩니다. 오늘은 리액트 생명주기의 각 단계를 살펴보고, 클래스형 컴포넌트와 함수형 컴포넌트에서 생명주기를 어떻게 다룰 수 있는지 알아보겠습니다. 요약리액트는 UI를 구성할 때 컴포넌트를 기반으로 동작하며, 각 컴포넌트는 마운트(Mount) > 업데이트(Update) > 언마운트(Unmount)의 과정을 거침해당 과정을 생명주기(Lifecycle)라고 부르며, 적절한 타이밍에 API 호출, 이벤트 등록/해제, 메모리 관리 등을 수행할 수 있음함수형 컴포넌..
[React] 배열 렌더링과 key
·
JAVASCRIPT
들어가며React로 애플리케이션을 개발할 때, 배열 데이터를 화면에 렌더링하는 것은 매우 일반적인 작업입니다. 이 과정에서 `key`는 React의 성능 최적화와 UI의 안정성을 유지하는 데 중요한 역할을 합니다. 이번에는 key의 개념, 사용법 그리고 관련된 주요 개념들을 정리해보겠습니다. 요약React에서 key는 배열 렌더링 시 필수적인 요소로, 성능 최적화와 UI의 안정성을 유지하는 데 중요한 역할을 합니다. 올바른 key를 설정하면 효율적인 DOM 조작이 가능하며, 유지보수성과 가독성도 향상됩니다. key를 사용할 때는 항상 고유한 값을 선택하고, 배열의 index는 피하는 것이 좋습니다. 이를 통해 더욱 안정적이고 성능 좋은 React 애플리케이션을 개발할 수 있습니다. 배열 렌더링과 keyk..
[React] 리액트 useMemo, useCallback란? (성능 최적화 방법)
·
JAVASCRIPT
들어가며React를 사용하다 보면 컴포넌트의 리렌더링과 관련된 성능 최적화를 고민해야 할 순간이 찾아옵니다. 이때 유용하게 사용할 수 있는 두 가지 훅이 바로 `useMemo`와 `useCallback`입니다. 이번 글에서는 이 두 훅의 개념, 사용법 그리고 활용 사례까지 알아보겠습니다. 요약`useMemo`와 `useCallback`은 React에서 성능 최적화를 위한 강력한 도구입니다.하지만 사용 목적에 맞게 신중히 활용해야 하며, 남용은 피해야 합니다.실무에서 큰 데이터 처리, 자식 컴포넌트 최적화 등 상황에서 유용하게 사용될 수 있습니다. useMemo, useCallbackuseMemo와 useCallback이란?useMemo`useMemo`는 값을 메모이제이션하는 데 사용됩니다. 특정 연산의 ..
[React] 리액트 렌더링 알아보기
·
JAVASCRIPT
들어가며리액트(React)는 현대 웹 개발에서 가장 널리 사용되는 라이브러리 중 하나로, 그 핵심은 효율적이고 직관적인 렌더링(Rendering)입니다. 이번에는 리액트 렌더링에 대해 기본 개념을 알아보겠습니다. 간단 키워드리액트 렌더링렌더링 발생 조건최적화 방법Reconciliation리액트 렌더링리액트에서 렌더링이란?리액트에서 렌더링은 컴포넌트의 상태(state)나 속성(props)이 변경될 때, UI를 갱신하기 위해 화면에 요소를 다시 그리는 과정을 의미합니다. 이 과정은 효율성을 위해 가상 DOM (Virtual DOM)을 사용합니다. 리액트는 변경 사항만 계산해 실제 DOM 업데이트를 최소화함으로써 성능을 최적화합니다. 가상 DOM가상 DOM은 실제 DOM의 가벼운 복사본으로, 메모리에 저장되어..
[React] React 컴포넌트란? 기본 개념편
·
JAVASCRIPT
들어가며리액트는 현대 웹 개발에서 가장 인기 있는 라이브러리 중 하나입니다. 리액트 컴포넌트는 리액트의 핵심 개념으로, UI를 구성하는 기본 단위입니다. 이번 게시글에서는 리액트 컴포넌트에 대한 기본 개념을 알아보겠습니다. Keypoint상태 관리생명주기최적화설계 패턴 리액트 컴포넌트 시작하기리액트 컴포넌트란?리액트 컴포넌트는 UI를 구성하는 기본 단위로, 재사용 가능한 자바스크립트 함수 또는 클래스입니다. 컴포넌트는 prop (속성)을 입력받아 JSX를 반환하여 UI를 렌더링합니다. 컴포넌트의 종류함수형 컴포넌트자바스크립트 함수로 정의되며, React Hooks를 사용해 상태와 생명주기를 관리합니다.function Greeting(props) { return Hello, {props.name}!;..
[React] Virtual DOM: 리액트의 핵심 기술
·
JAVASCRIPT
들어가며웹 애플리케이션에서 성능과 효율성을 높이기 위해 React는 Virtual DOM이라는 개념을 도입했습니다. Virtual DOM은 실제 DOM을 추상화한 가상의 DOM 구조로, DOM 업데이트 과정을 최적화하여 빠르고 부드러운 사용자 경험을 제공합니다. 이번 글에서는 Virtual DOM의 정의부터 동작 방식, 장점 그리고 실제 DOM과의 차이점까지 살펴보겠습니다. Virtual DOMVirtual DOM이란?Virtual DOM은 실제 DOM의 가벼운 복사본으로, 메모리에서 동작하는 객체입니다. React는 상태(State) 변화가 있을 떄마가 새로운 Virtual DOM을 생성하고, 변경사항을 감지해 필요한 부분만 실제 DOM에 반영합니다. 간단 예제import React, { useStat..
[React] 리액트적으로 사고하기(번역)
·
JAVASCRIPT
들어가며[react.dev] LEARN REACT > QUICK START > Thinking in React을 번역하며 정리한 내용입니다. React는 디자인을 바라보는 방식과 앱을 만드는 방식에 변화를 줄 수 있습니다. React로 사용자 인터페이스를 만들 때는 먼저 인터페이스를 컴포넌트라는 조각으로 나눕니다. 그런 다음, 각 컴포넌트의 다양한 시각적 상태를 설명합니다.마지막으로, 데이터를 컴포넌트를 통해 흐르게 하여 컴포넌트를 서로 연결합니다. 이 튜토리얼은 React로 검색 가능한 제품 데이터 테이블을 만드는 과정입니다. JSON data and mockupJSON API에서 받은 데이터와 mockup은 준비되어 있습니다. 이제 이것들을 가지고 React를 통해 UI를 구현할 것입니다.[ { c..
자바스크립트 문자열(String)의 모든 것
·
JAVASCRIPT
문자열의 기본 특성JavaScript에서 문자열은 원시 타입 중 하나이며, 변경 불가능(immutable) 합니다. 즉, 한 번 생성된 문자열을 직접 수정할 수 없고, 수정된 '새로운 문자열'을 만들어서 반환합니다. String 객체와 원시 문자열원시 문자열(primitive string)let str = "Hello";이는 JS 엔진 내부적으로 문자열 리터럴을 저장하며, 상수 풀(String pool)에 캐싱될 수도 있습니다.String 객체let objStr = new String("Hello");이는 래퍼(wrapper) 객체입니다. 원시 문자열에 대해 객체 형태의 프로퍼티와 메서드를 사용할 때 내부적으로 임시 `String` 객체로 감싸주지만, 가급적 직접 `new String(...)` 방식보다..
자바스크립트와 브라우저의 비동기 처리 구조: 이벤트 루프와 큐
·
JAVASCRIPT
들어가며자바스크립트와 브라우저 환경에서의 비동기 처리 구조를 전반적으로 정리한 내용입니다. 단일 스레드 언어인 자바스크립트가 어떻게 비동기 처리를 구현하는지, 그리고 브라우저가 제공하는 Web API와 이벤트 루프를 통해 어떤 식으로 콜백이 실행되는지 통합적으로 이해할 수 있도록 합니다. 비동기 프로그래밍(Asynchromous Programming)동기(Synchronous) vs 비동기(Asynchronous)동기어떤 작업 A를 요청하면 그 결과가 나올 때까지 멈춰서 대기한 뒤, 다음 작업을 처리하는 방식작업이 순차적으로만 진행되므로, 하나가 지연되면 전체 흐름에 블로킹이 발생비동기어떤 작업 A를 요청해도 그 결과를 기다리지 않고 다음 작업을 진행비동기 작업이 완료되면 콜백(Callback) 함수나 ..
배열 생성 심화: Array / Array.of / Array.from
·
JAVASCRIPT
Array()사용 예시// (1) 빈 배열 생성const emptyArray = Array();console.log(emptyArray); // []// (2) 길이만 지정해 배열 생성const arr2 = Array(5);console.log(arr); // [ , , , , ] (길이 5의 빈 슬롯 배열)console.log(arr.length); // 5// (3) 초기값을 가진 배열 생성const arr3 = Array(1, 2, 3);console.log(arr); // [1, 2, 3] 문제점console.log(Array(3)); // [ , , ] (길이 3의 빈 슬롯 배열)console.log(Array(3, 5)); // [3, 5]인자가 하나면 길이 ..