티스토리 뷰
JSX
React.JS는 일반적인 JavaScript 문법이 아닌 JSX 문법을 사용하여 UI를 구성하게 됩니다. 아래의 코드를 JSX라고 합니다.
const element = <h1>Hello, world!</h1>;
JSX는 JavaScript의 확장 구문으로 JavaScript의 모든 기능을 제공합니다. 위의 element 변수를 보면 HTML 태그를 정의하는데, 따옴표를 사용하지 않는 것을 볼 수 있습니다.
JSX의 사용은 React.JS에서 필수는 아닙니다. 하지만 JSX를 사용하는 것이 어플리케이션의 속도와, 코드 작성에서 더 쉽고 빠르게 개발 할 수 있게 해줍니다.
JSX Tag 안에 JavaScript 사용하기
JSX 안에 JavaScript를 사용하려면 중괄호{} 를 사용하면 됩니다.
function square(number) { return number * number; } let number = 2; const element = ( <h1> {number} square is {square(number)}! </h1> ); ReactDOM.render( element, document.getElementById('root') );
JSX에서 JavaScript 사용하기
위에서 말씀 드렸던 것 처럼, JSX는 JavaScript의 확장 구문이기 때문에 JavaScript의 모든 문법을 지원합니다.
function getSquare(number) { if (number == 0) { return <h1>This number is 0</h1> } else { return <h1>{number} square is {square(number)}!</h1> } }
JSX에서 Attribute
string 형태의 attribute는 기존과 동일한 방식으로 아래와 같이 표현할 수 있습니다.
const element = <div data-test="TEST"></div>;
JavaScript 형태의 attribute는 따옴표 없이 중괄호 {}로 아래와 같이 사용하면 됩니다. 따옴표를 사용하게 되면 JavaScript가 아닌 string으로 간주됩니다.
const element = <div data-test={number}></div>;
JSX에서 Child
만약 JSX의 tag의 자식 tag가 없다면 기존의 HTML과 동일하게 />로 닫아 주면 됩니다.
const element = <img scr={url}>;
또한 JSX의 tag는 하나의 container element 안에 포함시켜야 합니다.
const element1 = ( <div> <h1>First Child</h1> <h1>Second Child</h1> </div> ); const element2 = ( // 에러!!! <h1>First Child</h1> <h1>Second Child</h1> );
JSX를 객체로 표현하기
Babel은 JSX를 컴파일 할 때 React.createElement()를 호출합니다. 아래의 두 코드는 동일한 결과를 가져옵니다.
(JSX tag에서 className은 HTML tag의 class를 뜻합니다. JSX는 camelCase로 프로퍼티의 이름을 짓습니다)
const element = ( <h1 className="test"> Hello, world! </h1> );
const element = React.createElement( 'h1', {className: 'test'}, 'Hello, world!' );
'React.JS' 카테고리의 다른 글
[React.JS] Handling Events (0) | 2017.04.07 |
---|---|
[React.JS] State와 Lifecycle (0) | 2017.04.06 |
[React.JS] Componenst와 Props (0) | 2017.04.02 |
[React.JS] CodePen, create-react-app으로 React.JS 개발하기 (0) | 2017.04.01 |
[React.JS] React 소개 (0) | 2017.03.30 |