RSS를 기반으로 매일 찾아오는 새로운 이야기.
최신 콘텐츠를 놓치지 말고 구독으로 편하게 만나보세요.
SUBSCRIBE
최신소식을 편하게 만나보세요.
development/FE
JSX
2022. 8. 15. 14:39
JS에 XML을 추가해 확장한 문법입니다.
브라우저에서 바벨 을 사용해 실행 전 자바스크립트 형태의 코드로 변환 합니다.
// 실제 작성할 JSX 예시
function App() {
return (
<h1>Hello, good!</h1>
);
}
// 위와 같이 작성하면, 바벨이 다음과 같이 자바스크립트로 해석하여 준다.
function App() {
return React.createElement("h1", null, "Hello, good!");
}
형태
1. 부모 요소 가 감싸는 형태여야 합니다.
컴포넌트 내부는 DOM 트리 구조로 이루어져 있어야 가상 돔 ( Virtual DOM ) 에서 컴포넌트 변화를 감지 합니다.
ex) 에러 // Fail to compile
// parsing error : adjacent JSX elements be wrapped in an enclosing tag
// Did you want a JSX fragment <>...</>?
function App() {
return (
<div>Hello</div>
<div>GodDaeHee!</div>
);
}
ex) // 올바를 JSX 트리구조
function App() {
return (
<div>
<div>Hello</div>
<div>GodDaeHee!</div>
</div>
);
}
// fragment (</>) 로 감싸도 가능합니다.
특징
1. 표현식 사용
JSX 내부에 중괄호 ( {...} ) 로 감싸서 작성합니다.
ex) // 표현식 사용법
function App() {
const name = 'jhlee';
return (
<div>
<div>Hello</div>
<div>{name}!</div>
</div>
);
}
if 문과 for 문은 JS 표현식 아니므로 JSX 내부에서 사용할 수 없습니다.
ex) // 외부에서 사용하는 경우입니다.
function example(){
const user= "";
const loginCheck = true;
if(loginCheck){
user= <div> 사용 가능합니다. </div>;
}else{
user= <div> 비회원 입니다. </div>;
}
return (
<>
{user}
</>
);
내부에서 사용할 경우 삼항 연산자 , And 연산자 ( && ) 그리고 즉시실행함수를 사용해서 나타냅니다.
ex) // 내부에서 삼항 연사자를 사용할 경우입니다.
function example (){
const loginCheck = true;
return (
<>
<div>
{loginCheck ? ( <div> 사용가능합니다. </div>)
: (<div> 비회원 입니다. </div>
)}
</div>
</>
);
}
ex) // 내부에서 And 연산자 ( && )를 사용할 경우입니다.
function example (){
const loginCheck = true;
return (
<>
{loginCheck && <div> 사용가능합니다. </div> }
</>
);
}
ex) // 내부에서 즉시실행 함수를 사용할 경우입니다.
function example (){
const loginCheck = true;
return (
<>
{
(()=>{
if(loginCheck){
return( <div> 사용가능한 유저입니다. </div>);
}else {
return ( <div> 비회원 입니다. </div>);
}
})()
</>
);
}
2. 스타일 적용
JSX에서는 중괄호 ( { ... } ) 를 통해 JS 문법을 쓰기 때문에 스타일 적용 시에 객체 형태를 적용해야 합니다.