티스토리 뷰
1. JSX
const element = <h1>Hello, world!</h1>;
function App(){
return (
<div>
Hello<b>react</b>
</div>
);
}
위와 같은 코드는 아래와 같이 변환된다.
(브라우저에서 실행 전 코드가 번들링되는 과정에서 바벨을 사용하여 일반 JS형태의 코드로 변환)
function App(){
return React.createElement("div",null,"Hello",React.createElement("b",null,"react"));
}
* 바벨 ? 초기에는 ES6코드를 ES5코드로 변환해주는 컴파일러 역할을 하였고, 현재는 바벨을 이용해 JSX문법, TS 같은 정적 타입 언어, 제안 단계(정식문법이 아닌것들) 등을 사용 가능하게 해주고 있다.
- JSX는 JavaScript를 확장한 문법(JS + XML) 으로 React와 함께 사용하는 것을 권한다.
- JSX는 주로 React에서 쓰이며, 자바스크립트 문법은 아니다.
2. JSX 사용 규칙
2- 1. 감싸인 요소
- 컴포넌트에 여러 요소가 있으면 부모 테그로 감싸줘야한다.
- 혹은 react모듈에서 Fragment라는 컴포넌트를 불러와서 감싸줘야 한다.
=> 잘못된 코드
function App(){
return(
<h1>Hello</h1>
<h2>Test</h2>
)
}
=> 올바른 코드 1
function App(){
return(
<div>
<h1>Heollo</h1>
<h2>Test</h2>
</div>
)
}
=> 올바른 코드 2
import React,{Fragment} from 'react';
function App (){
retunr(
<Fragment>
<h1>Hello</h1>
<h2>Test</h2>
</Fragment>
)
}
=> Fragment는 다음과 같은 형태도 가능
function App(){
return{
<>
<h1>Hello</h1>
<h2>Test</h2>
<>
)
}
* Fragment ? React16 이전 버전에서는 하나의 엘리먼트만 리턴 가능한 특성때문에 여러개의 테그를 리턴하기 위해 부모 태그가 필요했고, 16버전에 추가된 Fragment를 통해 묶으면 여러 개의 태그를 그룹화가 가능하다.
- 불필요한 Dom node 생성을 막아 메모리를 적게 사용가능하다.
- css 메커니즘 상 부모 자식 관계를 가지고 있기 때문에 엘리먼트 사이에 <div>추가하면 스타일이 틀어질 수 있는 상황 방지가 가능하다.
2- 2. 내부 코드에 { } 로 감싸면 JS 표현식 작성이 가능하다.
- 조건부 렌더링
- JS 표현식에서는 if문을 사용할 수 없다. 하지만 삼항연산자는 사용 가능하다.
- 특정 조건을 만족할 때만 보여주도록하려면 AND 연산자 (&&)를 사용 가능하다.
function App(){
const name = 'react';
return(
<div>
{name === 'react' ? (<h1>type1</h1>) : (<h1>type2</h1>)} // 조건부 연산자를 통한 조건부 렌더링
{name === 'react' && <h1>tpye3</h1>} // AND 연산자를 통한 조건부 렌더링
</div>
)
}
'JavaScript' 카테고리의 다른 글
JS - Spread 문법 (0) | 2022.04.08 |
---|---|
JS - 배열 함수 sort() (0) | 2022.04.07 |
JS - Map() 과 Set() (0) | 2022.03.02 |
JS - 불변성(ps. Immutable) (0) | 2022.02.24 |
JS - 함수 (일반, 리터럴-익명) (3) | 2022.02.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 타입스크립트
- array
- useRef
- typescript
- 함수형 컴포넌트
- zustand
- programmers
- next.js 환경변수
- 시맨틱 웹
- 1급 시민
- vue
- debouncing
- 렌더링 속도 개선
- 가상스크롤
- 목표 일기
- rewrites
- 자바스크립트 동작원리
- 매겨변수와 인자
- 호이스팅
- redux
- 1급 객체
- 1급 함수
- Virtual Scroll
- redirects
- react
- next.js에 .gitignore가 적용되지 않을 때
- React로 쓰로틀링 디바운싱 구현
- 자바스크립트 비동기 동작원리
- Next.js
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함