jsx는 자바스크립트의 확장 문법이고, xml과 상당히 유사하게 생겼으며, 이런 형식으로 작성한 코드들은 브라우저에 실행되기전에 코드가 번들링 되는 과정에서 일반 자바스크립트의 형태로 변환됨
function App(){
return (
<div>
hello <b>seok28</b>
</div>
);
}
위의 코드가 아래코드로 변환됨
function App(){
return React.createElement("div", null, "Hello", React.createElement("b", null "seok28"));
}
위의 코드처럼 컴포넌트에서 렌더링 할때마다 React.createElement 함수를 사용해야 한다면 상당히 불편하므로 리액트의 jsx 문법을 사용하면 코드 작성시간을 절약할 수 있음
또한 jsx는 리액트로 개발할 때 사용되므로 공식 자바스크립트 문법이 아님
function App(){
return(
<div>
<h1>Hello</h1>
</div>
)
}
부모 요소 하나로 반드시 감싸야 하는 이유는 Virtual DOM 에서 컴포넌트의 변화를 감지 할 때 효율적으로 비교할 수 있도록 컴포넌트 내부는 하나의 DOM 트리로 구조로 이루어져야 하는 규칙이 있음
function App(){
const age = 25;
return(
<>
<h1>저의 나이는 {age} 입니다 </h1>
<>
)
}
function App(){
const name = 'seok28';
return(
<div>
{name === 'seok28'? (<h1>my name is seok28</h1>) : (<h2>my name isn't seok28</h2>)}
</div>
)
}
function App(){
const name = 'seok28';
return(
<div>
{name === 'seok28' && <h1>맞습니다.</h1>}
</div>
)
}
리액트에서 false와 null 값은 렌더링 되지 않음 하지만 0은 예외적으로 화면에 렌더링 됨
function App(){
const ex = undefined;
return ex;
}
결과는 오류 발생
function App(){
const ex = undefined;
return <div>{ex}</div>
}
함수에 리턴 값이 아닌 내부에 렌더링 하는 것은 오류가 발생하지 않음