Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 제네릭
- JS console
- returnType
- 티스토리꾸미기
- NonNullable
- 타입스크립트
- 폰트적용하기
- vue.js
- 커스텀
- click and drag
- 리액트
- TSDoc
- 공통컴포넌트
- 타입좁히기
- javascript
- React Native
- React.js
- utilty type
- 2022
- 성능최적화
- 개발콘텐츠
- reactjs
- 누구나 자료구조와 알고리즘
- 반복줄이기
- CSS
- const 단언문
- react
- typescript
- Chart.js
- 레이아웃쪼개기
Archives
- Today
- Total
몽땅뚝딱 개발자
[React] 함수형 컴포넌트 본문
함수형 컴포넌트는 class형 컴포넌트와 달리 아래와 같은 특징이 있다.
1. state가 없다.
2. 생명주기 함수를 사용할 수 없으며 hook을 이용한다.
3. 상위 컴포넌트에서 props와 context를 파라미터로 전달받아 사용한다.
4. render() 함수가 없으므로 return을 사용하여 화면을 그려준다.
◽ 함수형 컴포넌트 사용하기
import React from "react";
import './App.css';
import ChildComp from './ChildComp'
function App() {
return (
<div>
<h1>React</h1>
<ChildComp contents="[이건 함수형 컴포넌트!]" />
</div>
);
}
export default App;
import React from "react";
function ChildComp(props) {
let { contents } = props
return (
<h2>{ contents }</h2>
)
}
export default ChildComp
💡 Tip
함수형 컴포넌트를 사용하면 좋은 예는 아래와 같다.
1. 반복적인 html 축약할 떄
2. 큰 페이지들
3. 자주 변경되는 것들
함수형 컴포넌트에서는 생명주기 함수를 사용할 수 없는 대신 hook을 사용한다.
대표적인 hook으로 useState()와 useEffect()가 있다.
◽ hook 사용하기
예제 1.
import React from "react";
import './App.css';
import ChildComp from './ChildComp'
function App() {
return (
<div>
<h1>React</h1>
<ChildComp />
</div>
);
}
export default App;
import React, {useEffect, useState} from "react";
function ChildComp(props) {
// useState(): state 변수를 선언 및 할당한다.
// 첫번째 인자는 state 변수 명, 두번째 인가는 state 변수명을 변경해주는 함수이다.
// []: JS의 디스트럭쳐링 문법이라고 한다. ex) let num = [1, 2], let [a, b] = [1, 2]
const [ contents, setContents ] = useState('This is React')
// useEffect(): 생명주기 함수인 componentDidMount()와 비슷하다.
// return 되는 html 코드들이 화면에 그려진 이후에 실행된다.
// 최초 페이지가 로딩될 때 한 번 실행되고 setContents() 함수로 state 값이 변경되면 한번 더 실행된다.
useEffect(() => {
console.log('in useEffect()');
})
return (
<div>
<h2>{ contents }</h2>
<button onClick={() => setContents('This is hook')}></button>
</div>
)
}
export default ChildComp
예제 2.
import './App.css';
import {useState} from "react";
function App() {
let [title, setTitle] = useState(['테스트1','테스트2', '테스트3'])
let [likeCount, setLikeCount] = useState(0)
function updateCount() {
setLikeCount(likeCount++)
}
return (
<div className="App">
<div className="black-nav">
<h4>ReactBlog</h4>
</div>
<div className="list">
<h4>{title[0]}<span onClick={ updateCount }>👍🏻</span>{likeCount}</h4>
<p>2022-08-29</p>
</div>
<div className="list">
<h4>{title[1]}</h4>
<p>2022-08-29</p>
</div>
<div className="list">
<h4>{title[2]}</h4>
<p>2022-08-29</p>
</div>
</div>
);
}
export default App;
◽ state의 특징
1. state를 쓰던 html은 자동으로 재렌더링이 된다.
2. state는 자주 변경될 것 같은 html 요소처럼 변경사항을 바로 반영하고 싶을 때 state를 사용한다.
◽ 컴포넌트를 생성하는 방법 2가지
// 생성 방법 1.
function Child() {
return (
<div>자식 컴포넌트입니다.</div>
)
}
// 생성 방법 2.
let child = function() {
return (
<div>자식 컴포넌트입니다.</div>
)
}
출처
이정열, 초보자를 위한 리액트 200제 (정보문화사, 2021)
'Development > React.js · Next.js' 카테고리의 다른 글
[React] JSX 문법 3가지 (0) | 2022.08.29 |
---|---|
[React] <Fragments> 태그 (0) | 2022.08.28 |
[React] 클래스형 컴포넌트 - Component, PureComponent / shallow-equal (0) | 2022.08.28 |
[React] 클래스형 컴포넌트 - state / state 값 변경하기 / setState() / forceUpdate() (0) | 2022.08.22 |
[React] 클래스형 컴포넌트 - Props / 자료형 선언 / 필수값과 기본값 지정 (0) | 2022.08.20 |
Comments