자바스크립트의 확장 문법
이며 XML과 매우 비슷하게 생겼다.바벨
을 사용하여 일반 자바스크립트 형태의 코드로 변환된다.function App(){
return (
<div>
Hello <b>react</b>
</div>
);
}
이렇게 작성된 코드는 다음과 같이 변환됩니다.
function App(){
return React.createElement("div", null, Hello, React.createElement("b", null, "react"));
}
// ( src/index.js )
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root') // id가 root인 요소 안에 렌더링을 하도록 설정
);
❓ 참고) ReactDOM.render는 무엇인가요?
→ 이 코드는 컴포넌트를 페이지에 렌더링 하는 역할을 하며, react-dom 모듈을 불러와 사용할 수 있다.
→ 첫 번째 파라미터에는 페이지에 렌더링할 내용을 JSX 형태로 작성
→ 두 번째 파라미터에는 해당 JSX를 렌더링 할 document 내부 요소를 설정한다.
→ id = 'root'는 public/index.html 파일에 있다.
부모 요소 하나로 감싸야
한다.// ( src/App.js )
/* 잘못된코드 */
import React from 'react';
function App(){
return(
<h1>리액트시작!</h1>
<h2>Hello</h2>
);
}
export default App;
/* 올바른코드 */
import React from 'react';
function App(){
return(
<div>
<h1> 리액트시작! </h1>
<h2> Hello </h2>
</div>
);
}
export default App;
/* 리액트v16이상부터는 Fragment라는 기능을 사용할 수 있다. */
import React, {Fragment} from 'react';
function App(){
return(
<Fragment>
<h1> 리액트시작! </h1>
<h2> Hello </h2>
</Fragment>
);
}
export default App;
{ /* Fragment대신 <>로 표현이 가능하다 */ }
{}
로 감싸야 한다.import React from 'react';
function App(){
const name = "리액트";
return(
<>
<h1> {name} 시작! </h1>
<h2> Hello </h2>
</>
);
}
조건부 연산자를 사용
하면 된다.import React from 'react';
function App(){
const name = "리액트";
return(
<div>
{ name === '리액트' ? ( <h1>리액트입니다.</h1> ) : ( <h2>리액트가아닙니다.</h2> ) }
</div>
);
}
export default App;
import React from 'react';
function App(){
const name = "리액트";
return(
<div>
{ name === '리액트' && <h1>리액트입니다.</h1> }
</div>
);
}
const number = 0;
return number && <div>내용</div>
이 코드는 화면에 '내용'을 보여주는 것이 아니라 숫자 0을 보여준다.
/* 다음은 오류를 발생시키는 코드 입니다. */
import React from 'react';
import './App.css';
function App(){
const name = undefined;
return name;
}
export default App;
위의 코드를 저장한 후 브라우저를 확인해 보면 다음과 같은 오류가 나온다.
App(...): Nothing was returned from render. This usually means a return statement is missing.
Or, to render nothing, return null.
import React from 'react';
import './App.css';
function App(){
const name = undefined;
return name || '값이 undefined입니다.';
{ /* 한 줄로 표현할 수 있는 JSX는 감싸지 않아도 된다. */ }
}
export default App;
반면 JSX내부에서 undefined를 렌더링하는 것은 괜찮다.
import React from 'react';
import './App.css';
function App(){
const name = undefined;
return (
<div>
{ name };
</div>
);
}
export default App;
객체 형태
로 넣어야 한다.카멜 표기법(camelCase)
로 작성해야 한다.// ( src/App.js )
import React from 'react';
function App(){
const name = 'react';
return (
<div
style = {{
backgroundColor: 'black', // background-color → backgroundColor
color: 'white',
fontSize: '48px', // font-size → fontSize
fontWeight: 'bold', // font-weight → fontWeight
padding: 16 // 단위를 생략하면 px로 지정된다.
}}>
{ name }
</div>
)
}
export default App;
// ( src/App.js )
import React from 'react';
import './App.css';
function App(){
const name = '리액트';
return(
<div className="react">
{name}
</div>
)
}
export default App;
// ( src/App.css )
.react {
/* css내용 */
}
// ( src/App.js )
import React from 'react';
import './App.css';
function App(){
const name = 'react';
return (
<>
<div className="react"> { name }</div>
<input></input>
<input /> // self-closing태그
</>
);
}