티스토리 뷰
리액트에서는 JSX라는 문법을 사용한다. 이는 구성 요소 랜더링 구성 방법을 제공하는 방식으로 HTML처럼 생겼지만 Javascript의 확장된 문법이라고 말할 수 있다. (리액트에서 jsx 사용이 필수는 아니다.)
JSX는 한 번에 하나의 element를 반환하기 때문에 반드시 최상위 하나의 DOM을 추가해줘야한다. 다음 코드에서 최상위는 div로 구성된 마크업이다.
import "./styles.css";
export default function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
이 때, h1, h2 두 코드만 랜더링 하고 싶으면 어떻게 해야할까?
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
최소 단위를 쪼개서 컴포넌트를 만들거나 최상단에 불필요한 <div>를 넣을 수 밖에 없다. 왜냐하면 최상단 루트가 없는 JSX 코드는 이렇게 syntax error를 일으키기 때문이다.
Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?
라는 문구를 보면 둘러싼 코드를 요구하고 있고, fragement를 제안하고 있다.
https://ko.reactjs.org/docs/fragments.html
fragment란 상단과 같은 상황을 해결해주는 아주 나이스한 문법으로 불필요한 마크업 추가 없이 최상단 태그를 만들어 준다.
사용 방법은 아주 간단하다. 바로 전체를 감싸는 fragment만 추가해주면 된다.
import "./styles.css";
export default function App() {
return (
<fragment>
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</fragment>
);
}
이보다 더 간단한 방법은 바로 <></>만 추가하는 것이다.
import "./styles.css";
export default function App() {
return (
<>
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</>
);
}
이렇게 하면 랜더링 되었을 때, 불필요한 마크업 없이 깔끔하게 랜더링 되는 것을 확인할 수 있다.
'JavaScript > react' 카테고리의 다른 글
리액트(react)에서 innerHTML을 사용하는 특별한 방법 (0) | 2022.10.13 |
---|---|
useEffect return과 beforeunload 순서 (0) | 2022.08.29 |
useMemo와 useCallback의 차이점 심화학습 (0) | 2022.07.26 |
react에서 조건적으로 스타일을 제공하는 방법 (classNames) (0) | 2022.07.25 |
useState와 useRef의 공통점과 차이점. (0) | 2022.07.19 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- react
- npm
- 깃
- 리액트훅
- 센트리
- gitRebase
- storybookUI
- BFCache
- 크롬
- vue
- 리액트상태관리
- 사파리
- Git
- 자바스크립트
- TIL
- sentry
- 리액트
- frontend
- js
- 센트리모니터링
- 프론트앤드
- 깃명령어
- 리코일
- javascript
- reacthook
- CSS
- js테스트
- 모바일사파리
- 프론트엔드
- 김민태
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함