일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 브라우저 렌더링원리
- 깊은 복사
- 가상 dom
- 자바스크립트의 클래스
- 실행 컨텍스트
- 자바스크립트
- webpack
- 서버 사이드 렌더링
- 프로미스
- CORS
- 세션 스토리지
- undeclared
- CSS
- react
- polyfill
- async/await
- 이벤트 버블링
- 변수 생성 단계
- 스코프 체인
- 리액트
- 이벤트 캡처링
- 클라이언트 사이드 렌더링
- 리액트의 생명 주기
- props와 state 차이점
- 호이스팅
- 주소창에 naver 입력시 일어나는 일
- 얕은 복사
- 로컬 스토리지
- MPA
- 자바스크립트 함수
Archives
- Today
- Total
Gapus Dev Blog
[React] 리액트(React)에 대해 본문
리액트(React)
설명
- 리액트는 페이스북(현재 메타)에서 개발된 사용자 인터페이스(UI)를 구축하기 위한 JavaScript 라이브러리
- 리액트를 사용하면 동적이고 반응형인 웹 애플리케이션 개발 가능
- 컴포넌트 기반 아키텍처를 사용하여 UI를 작은 조각으로 분할하고, 이를 조합하여 복잡한 UI 구성 가능
배우기 위해 필요한 것
JavaScript 기초
- React는 JavaScript 라이브러리로 JavaScript 기본 개념과 문법을 이해하는 것이 중요
- 변수, 함수, 조건문, 반복문 등의 기본 개념 숙지
HTML 및 CSS 기초
- React에서 UI를 개발하기 위해 HTML과 CSS의 기본적인 지식 필요
- HTML을 사용하여 컴포넌트 구조를 작성, CSS를 사용하여 스타일링을 할 수 있어야 한다.
JSX 문법
- React에서는 JSX 문법을 사용하여 JavaScript 코드 안에 HTML과 유사한 구문을 작성
- JSX의 기본적인 문법과 작동 방식을 이해해야 함
React의 기본 개념 이해
- React의 주요 개념인 컴포넌트, props, state, 가상 DOM 등을 이해 해야한다.
- REACT의 동작 원리와 데이터 흐름을 파악하는 것이 중요
React 개발 도구
- React를 개발하기 위해 Node.js와 npm(Node Package Manager)을 설치
- React 개발에 필요한 패키지와 도구들을 관리하고 사용할 수 있어야 한다.
학습 자료와 튜토리얼
- React를 배우기 위해 다양한 학습 자료와 튜토리얼을 활용할 수 있어야 한다.
- 공식 React 문서, 온라인 강의 등을 활용하여 학습 가능
실습과 프로젝트
- React를 배우면서 실습과 프로젝트를 진행하는 것이 중요
- 간단한 예제부터 점차적으로 복잡한 프로젝트를 구현하면서 실제로 React를 사용하는 경험 쌓아야 함
커뮤니티와 협업
- React는 활발한 커뮤니티와 생태계를 가지고 있으므로, 다른 개발자들과의 협업과 지원 받을 수 있다.
- 온라인 개발자 커뮤니티나 포럼에 참여하여 질문하고 답변하는 등의 활동을 통해 지식을 공유하고 성장 가능
특징
컴포넌트 기반
- React는 컴포넌트 기반 아키텍처를 사용
- UI를 작은 독립적인 컴포넌트로 분리하여 개발 가능
- 코드의 재사용성과 유지보수성이 향상
Virtual DOM
- React는 가상 DOM을 사용하여 성능을 최적화
- 가상 DOM은 실제 DOM의 가벼운 복사본으로, React는 상태 변경에 따라
가상 DOM을 업데이트하고 필요한 경우에만 실제 DOM에 반영 - 효율적인 UI 렌더링 가능
JSX 문법
- React는 JSX라는 JavaScript와 유사한 문법을 사용
- JSX는 JavaScript 코드 안에 HTML과 유사한 구문을 작성 가능
- JSX는 컴파일 되면서 React 엘리먼트로 변환되어 렌더링 된다.
단반향 데이터 흐름
- React는 단반향 데이터 흐름을 강조
- 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달할 때는 props(속성)을 사용
- 데이터의 흐름을 예측 가능하고 관리하기 쉽게 만든다.
상태 관리
- React 컴포넌트는 상태(State)를 가질 수 있다.
- State는 컴포넌트 내부에서 관리되는 변경한 데이터
- 상태의 변경에 따라 UI가 업데이트되고 다시 렌더링
생태계와 커뮤니티
- React는 매우 활발한 생태계와 커뮤니티 소유
- 다양한 라이브러리, 도구, 컴포넌트 등이 개발되어 있어 개발자들은 필요한 기능을 쉽게 구현하고 문제 해결 가능
React Native
- React Native는 React를 기반으로 네이티브 앱을 개발할 수 있는 프레임워크
- 웹 애플리케이션과 동일한 코드로 iOS 및 Android 앱을 개발 가능
테스트 용이성
- React는 테스트하기 쉬운 특징을 가지고 있다.
- 각각의 컴포넌트는 독립적으로 테스트할 수 있고, 가상 DOM을 사용하여
렌더링 결과를 비교하는 등의 테스트 기능을 제공
예시
클래스형 컴포넌트
import React from 'react';
class HelloWorld extends React.Component {
render() {
return (
<div>
<h1>Hello, React!</h1>
</div>
);
}
}
export default HelloWorld;
함수형 컴포넌트
import React from 'react';
function HelloWorld() {
return (
<div>
<h1>Hello, React!</h1>
</div>
);
}
export default HelloWorld;
기본 문법
JSX 문법
- JSX는 JavaScript의 확장 문법으로, JS 코드 안에 HTML과 유사한 구문을 작성 가능
- JSX는 컴파일 되면서 React 엘리먼트로 변환
- 예시
import React from 'react';
function JSXExample() {
return <div>Hello, React!</div>;
}
export default JSXExample;
컴포넌트
- React에서 UI를 구성하는 기본 단위는 컴포넌트
- 컴포넌트는 독립적인 기능을 가지며, 재사용 가능한 UI 조각
- 클래스 컴포넌트와 함수형 컴포넌트로 작성 가능
- 예시
import React from 'react';
function PropsExample(props) {
return <div>{props.message}</div>;
}
export default PropsExample;
속성 (Props)
- 컴포넌트는 속성 (props)을 통해 데이터를 전달 가능
- 속성은 부모 컴포넌트에서 자식 컴포넌트로 전달되며, 컴포넌트 내부에서는 props 객체로 접근 가능
- 예시
import React, { useState } from 'react';
function StateExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
export default StateExample;
상태 (State)
- State는 컴포넌트의 내부 데이터를 관리하기 위해 사용
- 클래스 컴포넌트에서는 state 객체를 사용하여 상태를 관리하며, 상태 변경에 따라 UI가 업데이트
- 함수형 컴포넌트에서는 React Hooks를 사용하여 상태를 관리
- 예시
import React, { useState } from 'react';
function StateExample() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
export default StateExample;
이벤트 처리
- React에서는 이벤트 처리를 위해 이벤트 핸들러를 사용
- JSX 문법에서는 onClick, onChange와 같은 이벤트 핸들러를 사용하여 이벤트를 처리
- 예시
import React from 'react';
function EventHandlingExample() {
const handleClick = () => {
alert('Button clicked!');
};
return <button onClick={handleClick}>Click me</button>;
}
export default EventHandlingExample;
조건문과 반복문
- JSX 내에서는 JS의 조건문과 반복문을 사용 불가능
- 대신 삼항 연산자나 Array.map() 과 같은 JS의 기능을 사용하여 조건문과 반복문 작성 가능
- 예시
import React from 'react';
function ConditionalLoopExample() {
const isLoggedIn = true;
const numbers = [1, 2, 3, 4, 5];
return (
<div>
{isLoggedIn ? <p>Welcome, User!</p> : <p>Please log in.</p>}
<ul>
{numbers.map((number) => (
<li key={number}>{number}</li>
))}
</ul>
</div>
);
}
export default ConditionalLoopExample;
스타일링
- React에서는 CSS 스타일을 적용하기 위해 클래스 이름을 사용
- 클래스 이름은 className 속성을 통해 지정하며, CSS 파일이나 인라인 스타일을 사용 가능
- 예시
import React from 'react';
function StylingExample() {
return (
<div className="container">
<h1 style={{ color: 'blue', fontSize: '24px' }}>Styled Heading</h1>
<p className="text">This is a styled paragraph.</p>
</div>
);
}
export default StylingExample;
React를 사용할 때 유요한 기술
React Router
- React Router는 React 애플리케이션에서 라우팅을 관리하기 위한 라이브러리
- 다양한 페이지와 URL 경로를 지원하며, 동적 라우터와 네스팅된 라우터 등을 구현 가능
Redux
- Redux는 React 애플리케이션의 상태 관리를 위한 라이브러리
- 애플리케이션의 전역 상태를 중앙 집중식으로 관리하고, 상태 변경을 예측 가능한 방식으로 처리 가능
React Hooks
- React Hooks는 함수형 컴포넌트에서 상태 관리와 라이프사이클 기능을 사용할 수 있게 해주는 기술
- useState, useEffect, useContext 등의 훅을 사용하여 코드를 간결하게 작성 가능
Styled Components
- Styled Components는 CSS-in-JS 라이브러리로, JS 코드 안에 CSS 스타일을 작성 가능
- 컴포넌트에 스타일을 적용하고 동적으로 스타일을 변경 가능
Axios
- Axios는 HTTP 클라이언트 라이브러리
- React 애플리케이션에서 서버와 통신을 담당
- REST API 호출이나 데이터 요청에 사용되며, 비동기적으로 데이터를 가져올 수 있다.
React Testing Library
- React Testing Library는 React 컴포넌트의 테스트를 쉽게 작성할 수 있게 해주는 도구
- 컴포넌트의 렌더링, 이벤트 처리, 상태 변화 등을 테스트 가능
Next.js
- Next.js React 기반의 프레임워크로, 서버 사이드 렌더링(SSR)과 정적 사이트 생성(Static Site Generation)을 지원
- SEO 최적화와 초기 로딩 속도 개성에 도움
React Native
- React Native는 React를 사용하여 iOS 및 Android 모바일 애플리케이션을 개발할 수 있는 프레임워크
- 하나의 코드베이스로 여러 플랫폼에서 앱을 개발 가능
'프론트엔드 > React' 카테고리의 다른 글
[React] 훅(Hook)에 대해 (1) | 2023.11.30 |
---|---|
[React] 컴포넌트에 대해 (0) | 2023.11.29 |
[React] props와 state에 대해 (1) | 2023.11.28 |
[React] 리액트의 생명 주기(Life Cycle) (0) | 2023.11.27 |
[React] 가상 DOM의 개념과 DOM 과의 차이에 대해 (1) | 2023.11.24 |