JSX
2022. 8. 15. 14:39ㆍFrontEnd/React
728x90
반응형
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 문법을 쓰기 때문에 스타일 적용 시에 객체 형태를 적용해야 합니다.
또한 카멜 표기법 ( camelCase) 를 적용해 작성해야 합니다.
ex) // css 적용
function App() {
const style = {
backgroundColor: 'blue', // 카멜 표기법을 적용하였습니다. //
fontSize: '0.8em'
}
return (
<div style={style}> example! </div>
);
}
3. className 사용
JSX 문법은 class 대신 className을 사용합니다.
ex) // className 사용
function App() {
const style = {
backgroundColor: 'red',
fontSize: '1.2em'
}
return (
<div className="testClass"> good to you </div>
);
}
주석 사용
JSX 에서는 {/*…*/} 와 같은 형식으로 주석을 사용 합니다.
ex) // 주석 사용방법
function App() {
return (
<>
{/* 주석사용방법 */}
<div> example </div>
</>
);
}
시작태그가 여러줄일 경우에는, 내부에서 // 의 형식을 사용할 수 있습니다.
ex) // 주석 사용 방법입니다.
function App() {
return (
<>
<div
// 주석사용방법
> example </div>
</>
);
}
cf) JSX 없이도 리액트 사용이 가능합니다. ( 빌드 환경에서 컴파일 설정을 하고 싶지 않을 때 권장)
728x90
반응형
'FrontEnd > React' 카테고리의 다른 글
Rendering (1) | 2022.09.13 |
---|---|
순수함수 (0) | 2022.08.19 |
React Router (1) | 2022.08.01 |
생명주기 ( 라이플 사이클) (0) | 2022.07.28 |
Redux (0) | 2022.07.20 |