반응형
아래 변수 선언을 참조해보자.
const element = <h1>Hello, world!</h1>;
이 태그 구문은 문자열이나 HTML이 아니다. JSX라고 부르는 JavaScript의 확장 구문이다. 쉽게 말해서 JavaScript와 HTML을 합쳐놓은 문법이다. JSX는 React의 요소(Element) 를 생성한다. (createElement)
경고:
JSX는 HTML보다 JavaScript에 더 가깝기 때문에 React DOM은 camelCaseHTML 속성 이름 대신 속성 이름 지정 규칙을 사용한다.
(ex) class --> className, tabindex --> tabIndex.
JSX의 중괄호 안에 JavaScript 표현식을 넣을 수 있다.
아래의 예에서는, 자바 스크립트 함수 호출의 결과를 중괄호로 묶어 사용하고 있다.
function formatName(user) {
return user.firstName + ' ' + user.lastName;
}
const user = {
firstName: 'Harper',
lastName: 'Perez'
};
const element = (
<h1>
Hello, {formatName(user)}! // JSX는 JS 표현식을 중괄호로 묶어 사용한다.
</h1>
);
ReactDOM.render(
element,
document.getElementById('root')
);
직접 코드를 작성하여 확인해보고 싶다면 CodePen을 사용해보자.
실제 VSCode나 일반 편집기를 통해 JSX를 사용하기 위해서는 React를 import해야 한다. (Webpack 사용)
또한 JSX의 태그는 항상 닫혀있어야 한다. 그리고 Element는 꼭 감싸져 있어야 한다. (<div>)
JSX는 객체를 나타낸다.
Babel(webpack의 일종)은 JSX를 React.createElement() 호출로 컴파일 한다.
아래의 두 예는 동일한 내용을 나타낸다.
const element = (
<h1 className="greeting">
Hello, world!
</h1>
);
const element = React.createElement(
'h1',
{className: 'greeting'},
'Hello, world!'
);
ES6에서 더 이상 var 선언은 사용하지 않는다. 대신 const와 let을 사용한다.
const - 선언 후 고정적인 값 (블록 기준)
let - 선언 후 유동적인 값 (블록 기준)
React는 클라이언트 렌더링과 서버 사이드 렌더링을 모두 지원한다.
클라이언트 렌더링 - 필요할 때 요소를 가져오는 구조
서버 사이드 렌더링 - 미리 웹사이트에 필요한 요소를 서버에서 미리 만들어 한꺼번에 클라이언트로 보내주는 구조
따라서 Ajax와 같은 비동기 방식보다 검색 엔진 최적화(SEO)에 유리하다.
요약 : React에서는 일반 JavaScript가 아닌 JSX라는 확장 구문을 사용한다.
반응형
'React' 카테고리의 다른 글
React 공식문서 톺아보기 (feat.코어 자바스크립트) (0) | 2022.06.26 |
---|---|
React #4. Lifecycle Hook vs useEffect (0) | 2022.03.14 |
React #3. Props와 State (0) | 2020.03.07 |
React #1. 리액트란 무엇인가 (0) | 2020.03.03 |
React 공부 시 참고해야 할 5가지 (1) | 2020.03.02 |