리액트 사용 하는데 왜쓰는지 알고 쓰자
리액트는 프론트엔드를 위한 오픈소스 자바스크립트 라이브러리다.
선언형, 컴포넌트기반, 범용성의 3가지 특징이 있다
선언형
범용성
컴포넌트기반
React에서 UI를 구성할 때 사용하는 문법으로 JavaScript를 확장한 문법이고 이것으로 React 엘리먼트를 만들 수 있다.
기존 DOM을 이용하여 HTML과 JavaScrpit를 연결하여 렌더링 했지만
JSX는 HTML과 JS를 DOM 없이 하나의 파일에 작성하여 가독성도 좋고, 구조와 기능을 컴포넌트하여 한눈에 확인할 수 있도록 한다.
JSX를 사용하면 JavaScript 만으로 마크업(markup) 형태의 코드를 작성하여 DOM에 배치할 수 있다.
JSX는 JavaScript가 확장된 문법이지만, 브라우저가 바로 실행할 수 있는 JavaScript 코드가 아니다. 브라우저가 이해할 수 있도록 변환 해야하는데,
이때 이용하는 것이 바로 'Babel'이다. Babel은 JSX를 브라우저가 이해할 수 있는 JavaScript로 컴파일한다. 컴파일 후, JavaScript를 브라우저가 읽고 화면에 렌더링할 수 있다.
npx create-react-app
명령어를 통해 리액트에 필요한 개발 툴을 설치한다.
여러 엘리먼트 작성시 반드시 최상위에서 opening tag와 closing tag 로 감싸야한다.
JSX는 className = "클래스명"을 해야한다. Name안붙이면 자바스크립트 class로 인식
O X
<div>
<div>Hello</div> <div>Hello</div>
<div>Wolrd</div> <div>Wolrd</div>
</div>
<div className= "salutation"> // <- Name
jsx 에서 js를 사용하려면 {}
를 써야한다 아니면 텍스트로 인식한다
ex
const Str = 'hello'
<div>{str}, wolrd! </div> // hello, wolrd!
{Str === 'hello' ? <p>진실<p> : <p>거짓<p>}
첫 시작은 대문자로 작성, 조건부 렌더링시 if문 X 삼항연산자 O
반복적으로 렌더링을 할경우 map()
함수를 사용하면 매우 편함 그리고 반드시 "key" JSX 속성을 넣어야함
function Blog() {
//
const blogs = posts.map((post) => (
<div key={post.id}>
<h3>{post.title}</h3>
<p>{post.content}</p>
</div>
));
return <div className="post-wrapper">{blogs}</div>;
}
웹을 앱처럼 사용할수있다. 즉 새로고침없이 랜더링
페이지 단위가 아닌, 컴포넌트 단위로 시작한다
컴포넌트 기반으로 에러를 줄이고 기능구현에 더 집중이 가능하다.
무엇보다 HTML JS 를 같이 작성하여 매우 편리함
npx create-react-app
에 필요한 개발툴이 다 포함되어있어서 편리하다.