프론트엔드 개발을 위한 JavaScript 오픈소스 라이브러리.
리액트의 3가지 특징 : 선언형, 컴포넌트 기반, 범용성
JavaScript XML의 줄임말. (문자열도 아니고, HTML도 아님)
JavaScript를 확장한 리액트에서 UI를 구성할 때 사용하는 문법.
// 하나의 엘리먼트 안에 모든 엘리먼트가 포함되어야 한다.
<div> // 이 div가 안의 2개의 div를 포함함.
<div>
<h1>Hello</h1>
</div>
<div>
<h2>World</h2>
</div>
</div>
React에서 CSS class속성을 지정하려면 class가 아닌 className으로 표기해야 함.
<div className="abc">Hello</div>
JSX에서 JavaScript를 쓰고자 한다면, 중괄호를 반드시 이용해야함. 사용하지 않을 시 일반 텍스트로 인식함.
function App() {
const name = 'kim';
return (
<div>
Hello, {name}!
// 중괄호를 이용한다면 Hello, kim!을 정상적으로 출력해주지만
// 중괄호를 사용하지 않는다면 Hello, name!을 출력하게 됨.
</div>
);
}
React 엘리먼트가 JSX로 작성되면 반드시 대문자로 시작해야 함. 소문자로 시작할 경우 일반적인 HTML 엘리먼트로 인식함. (이렇게 대문자로 작성된 JSX 컴포넌트 → 사용자 정의 컴포넌트)
조건부 렌더링의 경우 삼항연산자를 이용해야 한다.
- JSX 내부의 JavaScript 표현식에서 if문을 사용할 수 없음.
- 그래서 JSX 밖에서 if문을 사용하여 사전에 값을 설정하거나, {}안에서 삼항연산자를 사용해야 함.
{ 조건 ? true일 때 실행할 명령문 : false일 때 실행할 명령문 }
ex) { name === kim ? console.log('맞음') : console.log('아님') }
React에서 여러 개의 HTML 엘리먼트를 표시할 때는 map() 함수를 사용. 반드시 JSX 속성 'key'를 넣어야 하는데, 넣지 않을 시 리스트의 각 항목에 key를 넣어야 한다는 경고가 표시됨.