안녕하세요 언제까지 리액트 시작전인지 모르겠지만...
매번 느끼는 건데 기본기가 탄탄하지않으면 어느 순간 막히는 구간이 다시 오더라구요
하나하나 따져보면서 시작을 하려고해요
저번엔 class App extends Component 였었죠 기본앱을 만들수 있는
Component 를 상속받기 위해서 import {Component} from 'react' 도 배웠고 이제 index.js 에서
만들어진 App 을 어떻게 렌더링을 시키는지 확인하고자 index.js 을 보았습니다.
필요없는것들을 지우고 렌더링 에 초점을 맞추기 위해서
코드를 수정하고 리액트 컴포넌트 쪼개기는 아직 부족한 상태라 기존의 샘플로 작성중인 코드들 을 옮기기 위해 여러 줄 태그를 써보았습니다만
render() { return 에서 사용되는 jsx 문법에는 덮는 부모가 꼭 있어야 한다고 에러가 납니다.
해당 이유는 virtual DOM 에서 컴포넌트 변화를 감지 하기 위해 컴포넌트 내부는 DOM 트리구조 하나로 되어야 한다는 규칙이기 때문이라고 하네요
그래서 예전에는 해당 을 고치기 위해서
<div >
<tag>
<taG>
</div>
로 썻다고 하는데
요즘{ React v16버전이후 부터는) Fragment 컴포넌트가 도입되어서 div로 감싸지 않고 Fragment를 사용한다고 합니다.
무슨 차이인지 궁금해서 한번 테스트 해보았습니다.
div로 감쌋을때
렌더링 결과는
이와 같이 렌더링되네요 (create-react-app) 에서 App.js만 수정한거기 때문에 다른 변화들은 잘 모르지만 그 기준으로 봐주시길 바랍니다.
div가 아닌 Fragment 로 감쌌을 때
앗.. 그냥 그대로 수정했더니 모른다고 에러가 나오네요 ;; ㅜ
'Fragment' is not defined react/jsx-no-undef
import 에 비구조화 할당으로 Component가 아닌 Fragment도 가져와야 되는 걸 몰랐네요
실행 결과 -
Fragment 로 감싸는 경우는 뭔가 렌더링 후에는 없던것 처럼 나오네요
위에 있던 불필요한 div의 렌더링을 없앨수 있어서 확실히 좋은것 같습니다.
Fragment를 생활화!!
그리고 JSX에서는
기존에 있던 JSP 템플릿 <% 여기에 자바 코드를 넣었었죠
과같이 자바스크립트 코드를 넣을수도 있다고 하네요
렌더를 이와같이 수정시에는
{AppTitle} 부분이 동적으로 들어갈수 있네요 ㅜㅜ 이런거 너무좋아합니다.
여기 까지 해보니 JSX 렌더링에 대해서 한번 더 작성해야 할것 같아서 다시 한번 작성 하겠습니다.
JSX좋은것 같습니다.
'개발일지(Platform & Library) > React' 카테고리의 다른 글
[React] 리액트 컴포넌트 정리 (Component) (0) | 2018.08.20 |
---|---|
[React] 시작 전 준비 단계 트러블 슈팅 (Trouble Shooting) (0) | 2018.08.07 |
[React] 시작 전 준비 마지막 및 정리 ( JSX , ReactDOM.render ) (0) | 2018.08.07 |
[React] 시작 전 준비 1단계( 리액트 코드 ) (0) | 2018.08.05 |
[React] 시작 전 준비 (0) | 2018.08.03 |