JSX는 html과 비슷하지만 자바스크립트로 변환된다.
태그는 꼭 닫혀이었야 한다.
<div></div>
<input /> // self closing
두 개 이상의 엘리먼트는 하나의 엘리먼트로 감싸져 있어야 한다.
<div>
<div></div>
<button></button>
</div>
import React, { Component, Fragment } from 'react';
class App extends Component {
render() {
return (
<Fragment>
<div></div>
<div></div>
</Fragment>
);
}
}
export default App;
{}
안에 자바스크립트 값을 입력해준다.
import React, { Component, Fragment } from 'react';
class App extends Component {
render() {
const name = 'ej!';
return (
<div>
hello {name}
</div>
);
}
}
export default App;
위 코드의 결과로 화면에 hello ej!
가 출력된다.
{}
블록 내에서 유효하다.(블록 레벨 스코프){}
블록 내에서 유효하다.(블록 레벨 스코프)JSX 안에서 자바스크립트 값을 사용할 때 {}
안에 if문 등을 사용할 수는 없다. 그렇기 때문에 여러 방법이 있는데, 가장 많이 이용하는 방법은 삼항연산자를 사용하는 것이다.
import React, { Component } from 'react';
class App extends Component {
render() {
const name = 'ej';
return (
<div>
{
name === 'ej' && <div>ej다!!</div>
}
</div>;
);
}
}
export default App;
위 코드는 선언된 name
이 ej
일 경우에만 ej다!!
라는 글자를 화면에 출력하게 된다.
조건이 여러개일 경우에는 JSX 바깥에서 작성하는 것이 일반적이다.
하지만, 굳이 JSX 내부에서 여러 개의 조건을 사용하고 싶을 경우에는 IIFE를 이용해서 함수를 선언하고 바로 실행하는 방식으로 구현할 수 있다.
import React, { Component } from 'react';
class App extends Component {
render() {
const value = 3;
return (
<div>
{(() => {
if (value === 1) return <div>1이다!</div>;
if (value === 2) return <div>2이다!</div>;
if (value === 3) return <div>3이다!</div>;
return <div>없다</div>;
})()}
</div>
);
}
}
export default App;
() => {}
화살표 함수. ES6에서 사용한다.
this
, arguments
, super
개념이 없는 함수.
css style은 객체 형태로 넣어줘야 한다.
css style이름은 카멜케이스로 작성해야 한다.
import React, { Component } from 'react';
class App extends Component {
render() {
const style = {
backgroundColor: 'black',
padding: '16px',
color: 'white',
fontSize: '36px'
// fontSize: 5 + 10 + 'px'
// 위처럼 자바스크립트로도 작성할 수 있다.
};
return <div style={style}>안녕하세요!</div>;
}
}
export default App;
App.js
import React, { Component } from 'react';
import './App.css';
class App extends Component {
render() {
return <div className="App">안녕하세요!</div>;
}
}
export default App;
App.css
.App {
background: black;
color: aqua;
font-size: 36px;
padding: 1rem;
font-weight: 600;
}
className
이라고 입력해줘야 한다.
class
라고 입력해도 작동을 하긴 한다. 하지만 className
이 올바른 컨벤션이니 className
을 사용하자.
멀티라인(/**/
)으로 작성하되, 브라켓({}
)으로 감싸줘야 한다.
{/* 주석처리 */}
컴포넌트 생성 후 컴포넌트에 주석을 작성할 경우에는 //
를 사용해준다.
<div
// 컴포넌트에 주석 쓸거야!!!
>
></div>