💡 React는 사용자 인터페이스(UI)를 만들기 위한 자바스크립트 라이브러리이다.
개발에는 선언적 개발, 절차적 개발이 있는데 리액트는 선언적이다.
우선 절차적은 js로 DOM에 접근하는 것이다.
엘리먼트 요소들을 만들 때 특정 요소를 찾고 그 요소의 자식 요소로 또 다른 요소를 만드는등 굉장히 수고스럽고 화면에 어떻게 구현될지도 고민해야 한다.
하지만 선언적은 원하는 결과를 선언하면 리액트가 알아서 처리해주는 것이다.
그러니 DOM조작에 시간을 줄이고 화면에 어떻게 나올지만을 고민하면 되는 것이다.
컴포넌트를 선언하는 방식은 Class Component, Function Component 2가지가 있다.
Function
은 Class
와 달리 render메소드
없이도 JSX
를 반환하며 Class
보다 간단하고 Class
에서만 사용가능했던 기능들을 Function
에서도 사용할 수 있게 보완 되면서 Function
을 더 사용하게 되었다.
따라서 본 글에선 Function Component 을 기준으로 설명하겠다.
import React from 'react';
const Main = () => {
return <h1>This main</h1>;
};
export default Main;
리액트는 소문자를 HTML 태그로 인식하기 때문에 컴포넌트는 첫글자를 대문자로 해야한다.
import Head from './Head/Head';
const Main = () => {
return (
<>
<Article />
</>
);
};
export default Main;
다른 컴포넌트를 가져다 쓰고 싶으면 import해야만 사용할 수 있다.
화면이 렌더링 될 때 DOM, CSS, Rayout, Paint 등 많은 작업을 DOM조작 마다 수행한다.
만약 데이터 규모가 크다면 버튼 하나를 눌렀을 때 원하는 기능 하나가 아닌 페이지 전체가 리로드 되면서 DOM조작 로딩 시간이 길어지면 그만큼 작업도 길어지면서 성능이 저하된다.
Virtual DOM은 조작시 계산을 해보고 한번에 필요한 DOM만 조작하며 효율성을 높인다.
컴포넌트는 여러 컴포넌트를 조립해 새로운 컴포넌트를 만들 수 있고 부모, 자식 컴포넌트도 만들 수 있다.
또한 독립적으로 사용할 수 있기에 재사용과 유지보수 측면에서도 좋다.
JSX(JavaScript Syntax eXtension)는 리액트에서 사용하는 JS 확장 문법이다.
JS파일 안에서 HTML처럼 작성할 수 있다.
onChange={}
처럼 카멜케이스를 사용한다.style={{color:red, fontSize:10px}}
처럼 인라인으로 스타일을 줄 수 있다.<React.fragment>
태그로 감싸줘야 한다.<> </ >
빈 태그를 사용해도 결과는 같다.React의 탄생배경을 알아보면서 왜 사용해야 하는지 알아보고 React의 기초에 대해 알아보았다.
현재로서는 너무 어려운 라이브러리 같다... 하지만 더 알아보고 공부 해봐야겠다.