일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vue 지역 컴포넌트
- Spacer
- 프로그래머스 데브코스 프론트엔드
- Vue
- postcss
- flex
- SCSS use
- 쌓임맥락
- 폼 입력 바인딩
- react next
- SCSS extend
- KDT 프로그래머스 데브코스 프론트엔드
- vuex map
- vue mixin
- 리스트 렌더링
- 다른컴퓨터에서 git사용
- 프로그래머스 프론트엔드 데브코스
- intersection opserver
- 리액트
- 이벤트 수식어
- SCSS forward
- 프로그래머스 K_Digital Training
- nextjs사용법
- 고양이 사진 검색기
- vue 이벤트 수신
- KDT 프로그래머스
- git 같은계정 다른 컴퓨터
- netlify redirect
- SCSS import
- 프로그래머스 데브코스
- Today
- Total
혼자 적어보는 노트
[React] JSX와 Component에 대한 이해 (+ Fragments) 본문
JSX란?
javascript안의 HTML이라고 볼 수 있다.
javascript와 HTML사이의 이 조합을 jsx라고 부른다. (react에서만 있는 개념)
JSX는 자바스크립트 안에서 HTML 문법을 사용해서 view를 구성할 수 있게
도와주는 자바스크립트 문법이라고 볼 수 있다.
Component
function App() {
return (
<div>
<h1>hi hello</h1>
</div>
);
}
component는 위와 같이 React 엘리먼트를 반환하는 함수이다.
javascript 함수이기 때문에 말 그대로 함수 컴포넌트라고 한다.
react는 여러가지의 component를 만들 수 있다.
*component명은 대문자로 생성해 주는 것을 원칙으로 한다.
컴포넌트 생성 및 다중 컴포넌트 렌더링
component를 만들 때는 한 파일 안에서 관리 할 수도 있겠지만
여러 component가 있을 시에 파일을 나누어 관리하는 것이 좋다.
항상 import React from "react";를 상단에 적어주어야 한다고 했지만.
찾아보니 cra4.0부터는 jsx를 사용할 때 상단에 import를 적어주지 않아도 된다.
하지만 해당 파일을 import할 수 있게 export default [함수명]; 해야 한다.
import [component name] from '[path]';
ReactDOM.render(
<React.StrictMode>
<App />
<[component name] />
</React.StrictMode>,
document.getElementById('root')
);
index.js에 새로운 component를 import해주고
위와 같이 입력하면 2개의 component를 입력 가능하다.
이전 버전에서는 한번에 하나의 component만 렌더링 할 수 있었으나 변경된 모양이다.
import [component name] from '[path]';
function App() {
return (
<div>
<h1>hi hello</h1>
<[component name] />
</div>
);
}
App.js component안에
새로 만든 component를 import해주고 안에 넣어서 사용할 수도 있다.
* 주의할 점은 return () 소괄호 안에 담아주어야 하며
한 개의 div로 감싸서 그 안에 엘리먼트들을 담아야 한다는 점.
- Fragments
React에서는 component가 여러개의 엘리먼트들을 반환할 때 div로 감싸주어야 한다.
하지만 div로 감싸고 싶지 않다면 <></>로 감싸주어도 된다. (Fragments 문법)
<> </>는 <React.Fragment> </React.Fragment>의 축약형이라고 볼 수 있다.
function App() {
return (
<>
<h1>hi hello</h1>
<[component name] />
</>
);
}
하지만 fragments에 key가 있다면 <React.Fragment> </React.Fragment> 로 명시해 주어야 한다.
function App() {
return (
<React.Fragment>
<h1>hi hello</h1>
<[component name] />
</React.Fragment>
);
}
- Component 안에서 변수명, 함수 불러오기
function App() {
let views = 10;
function totalViews(){
return views += 100;
}
return (
<div className="App">
<div>
<div>{views}</div>
<div>{totalViews()}</div>
</div>
</div>
);
}
위와같이 변수명과 함수로 return받은 값을 중괄호{}와 함께 선언해주면 사용 가능하다.
- Inline style 속성 넣기
<h2 style={ { color: 'yello', fontSize : '20px' } }> Title</h2>
중괄호 안에 object 자료형으로 만든 스타일 적용.
camelCase로 속성명을 적어야 한다.
하지만 웬만하면 css에 적어주는 것으로 하자.
**요약
** component명은 대문자로 생성해 주는 것을 원칙으로 한다.
** component 파일을 나누어 관리 시 하단에 export를 해주어야 다른 파일에서 import를 해서 사용할 수 있다.
** return () 소괄호 안에 담아주어야 하며 한 개의 div로 감싸서 그 안에 엘리먼트들을 담아준다.
** div로 감싸고 싶지 않다면 <> </>로 감싸주어도 된다. (Fragments 문법)
** 만약 fragments에 key가 있다면 <React.Fragment> </React.Fragment> 로 명시해 줘야 한다.
'React' 카테고리의 다른 글
[React] Class Components와 State (0) | 2021.10.22 |
---|---|
[React] Prop-types (0) | 2021.10.22 |
[React] 반복되는 component 표현 - map함수 (0) | 2021.10.21 |
[React] props에 대한 이해 (0) | 2021.10.21 |
[React] 리액트 세팅과 리액트 동작 방식에 대한 이해 (0) | 2021.10.19 |