App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/* eslint-disable */
import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<div className="modal">
<h4>제목</h4>
<p>날짜</p>
<p>상세내용</p>
</div>
</div>
);
|
cs |
div className 이 modal 인 div 들이 여러개 정의되어야 한다고 하면 저 div 를 n 개만큼 복사 붙여넣기를 해야한다.
그러면 코드가 지저분 해진다.
# 컴포넌트
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
32
33
34
35
36
37
38
39
|
/* eslint-disable */
import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<Modal></Modal>
</div>
);
}
function Modal() {
return (
<>
<div className="modal">
<Modal></Modal>
</div>
</>
)
}
const Modal = () => {
return (
<>
<div className="modal">
<h4>제목</h4>
<p>날짜</p>
<p>상세내용</p>
</div>
</>
)
}
export default App;
|
cs |
이럴때 사용하는 것이 "컴포넌트" 라는 것이다.
Modal 을 함수로 정의 해 놓고, html 태그 안에서 <함수명></함수명> 또는 <함수명/> 으로 사용 하면,
Modal 안에 있는 html 태그들을 가져다 쓸 수 있다.
15~23번째 줄과 26~36번째 줄은 같은 의미이다.
컴포넌트 안에는 <div> ... </div> <div> ... </div> 가 선언될 수 없으므로 제일 바깥에 의미 없는 태그인 <></> 를 같이 써주도록 한다.
참고로 React 프로젝트를 처음 생성하면 <App /> 이 render 안에 적혀 있을텐데,
이건 App.js 의 App() 함수 안에 있는걸 표시해준다는 것이다.
# 컴포넌트로 만들면 좋은것
1. 반복적인 html
2. 큰 페이지
3. 자주 변경되는 것
'공부 > React' 카테고리의 다른 글
React : 상위 요소 클릭 안되게 하는 법 (0) | 2022.11.27 |
---|---|
React : 동적 UI 만들기 (0) | 2022.11.26 |
React : state 가 array/object 일 때 데이터 변경하기 (0) | 2022.11.17 |
리액트 TODO 리스트 만들기 : #4 좋아요 💕 기능 만들기 (0) | 2022.11.17 |
React : terminal > 경고메세지 안나오게 하는 방법 (0) | 2022.11.17 |