본문 바로가기

JavaScript/React45

React) 컴포넌트 성능 최적화 - react-virtualized (렌더링 최적화) 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [리액트를 다루는 기술]의 책을 참고하여 포스팅한 개인 공부 내용입니다. 컴포넌트 성능 최적화 react-virtualized를 사용한 렌더링 최적화 기존에 만든 일정 관리 웹 애플리케이션에 초기 데이터가 2,500개 등록되어 있습니다. 하지만, 실제 화면에 나오는 일정은 단 9개뿐이고 나머지는 스크롤을 해야만 볼 수 있습니다. 현재 컴포넌트가 처음 렌더링될 때 2,500개 컴포넌트 중 2,491개 컴포넌트는 스크롤하기 전에 보이지 않음에도 불구하고 렌더링이 이루어집니다. 즉, 시스템 자원 낭비라고 볼 수 있습니다. react-virtualized를 사용하면 스크롤되기 전에 보이지 않는 컴포넌트는 렌더링하지 않고 크기만 차지하게끔 해주고, 스크롤되면 해당 .. 2022. 11. 21.
React) 컴포넌트 성능 최적화 - React.memo, useState의 함수형 업데이트, useReducer, 불변성의 중요성(얕은 복사) 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [리액트를 다루는 기술]의 책을 참고하여 포스팅한 개인 공부 내용입니다. 컴포넌트 성능 최적화 React.memo를 사용하여 컴포넌트 성능 최적화 컴포넌트의 리렌더링을 방지하기 위해선 shouldComponentUpdate 라이프사이클을 사용하면 되지만, 함수 컴포넌트에선 라이프사이클을 이용할 수 없습니다. 대신! React.memo 함수를 사용합니다. React.memo - 컴포넌트의 props가 바뀌지 않았다면, 리렌더링 하지 않도록 함 - 함수 컴포넌트의 리렌더링 성능 최적화 TodoListItem.js import React from 'react'; import cn from 'classnames' import { MdCheckBox, MdRemov.. 2022. 11. 20.
React) 컴포넌트 성능 최적화 - React DevTools, 느려지는 원인 분석 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [리액트를 다루는 기술]의 책을 참고하여 포스팅한 개인 공부 내용입니다. 컴포넌트 성능 최적화 이전에 만들어본 일정 관리 웹 애플리케이션을 기반으로 컴포넌트의 성능을 최적화해보겠습니다. 현재로는 데이터가 적기 때문에 느려지는 것을 체감할 수 없어서 많은 데이터를 렌더링해보겠습니다. 많은 데이터 렌더링하기 App.js import { useState, useRef, useCallback } from 'react'; import TodoInsert from "./components/TodoInsert"; import TodoList from "./components/TodoList"; import TodoTemplate from "./components/Tod.. 2022. 11. 20.
React) 일정 관리 웹 애플리케이션 만들기 - 2 (항목 지우기, 수정하기 기능 구현) 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [리액트를 다루는 기술]의 책을 참고하여 포스팅한 개인 공부 내용입니다. * 이전 포스팅 참고 https://chanychu.tistory.com/451 React) 일정 관리 웹 애플리케이션 만들기 - 2 (todoList 렌더링, 항목 추가 기능 구현하기) 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [리액트를 다루는 기술]의 책을 참고하여 포스팅한 개인 공부 내용입니다. * 프로젝트 준비 및 UI 구성은 아래 포스트 참고 https://chanychu.tistory.com/ chanychu.tistory.com 지우기 기능 구현하기 배열 내장 함수 filter 배열의 불변성을 지키면서 배열 원소를 제거해야하는 경우, filter 함수를 사용하면 간.. 2022. 11. 20.
React) 일정 관리 웹 애플리케이션 만들기 - 2 (todoList 렌더링, 항목 추가 기능 구현하기) 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [리액트를 다루는 기술]의 책을 참고하여 포스팅한 개인 공부 내용입니다. * 프로젝트 준비 및 UI 구성은 아래 포스트 참고 https://chanychu.tistory.com/450 React) 일정 관리 웹 애플리케이션 만들기 - 1 (프로젝트 준비 및 UI 구성) 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [리액트를 다루는 기술]의 책을 참고하여 포스팅한 개인 공부 내용입니다. 프로젝트 준비하기 프로젝트 생성 및 필요한 라이브러리 설치 $ yarn cr chanychu.tistory.com 기능 구현하기 App에서 todos 상태 사용하기 추후 추가할 일정 항목에 대한 상태들은 모두 App 컴포넌트에서 관리합니다. 따라서 App에서 useStat.. 2022. 11. 19.
React) 일정 관리 웹 애플리케이션 만들기 - 1 (프로젝트 준비 및 UI 구성) 안녕하세요, 코린이의 코딩 학습기 채니 입니다. [리액트를 다루는 기술]의 책을 참고하여 포스팅한 개인 공부 내용입니다. 프로젝트 준비하기 프로젝트 생성 및 필요한 라이브러리 설치 $ yarn create react-app todo-app create-react-app을 이용해 프로젝트를 생성해주었습니다. $ cd todo-app $ yarn add sass classnames react-icons 해당 디럭토리로 이동하여 필요한 라이브러리를 설치해줍니다. ※ react-icons 리액트에서 다양하고 예쁜 아이콘을 사용할 수 있는 라이브러리 (SVG 형태로 이루어진 아이콘을 컴포넌트처럼 쉽게 사용) Prettier 설정 코드 스타일을 깔끔하게 정리하기 위해 Prettier를 설정해줍니다. .prettie.. 2022. 11. 19.