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 |
Tags
- SpringBoot
- Spring REST Docs
- AuthenticatoinProvide
- MFA
- tasklet
- vue
- OpenStack
- Spring Security
- vuejs
- Spring Batch
- stopPropogation
- 리액트
- JavaScript
- Flyway
- Reduxpender
- cheerio
- cloud native
- Filter
- REACT
- SWAGGER
- preventdefault
- gradle
- SpringRESTDocs
- Pender
- T-OTP
- UsernamePasswordAuthenticationFilter
- axios
- Crawling
- openapi3
- MSA
Archives
- Today
- Total
Miracle Morning, LHWN
19. Custom Hook 만들어보기 본문
# 컴포넌트를 만드는 과정에서 반복되는 로직이 발생하기 마련이다. 이럴 때에는 Custom Hook 을 만들어서 반복되는 로직을 쉽게 재사용한다.
구현하는 방법은 Hook 파일 안에서 useState/useEffect/useReducer/useCallback 등 Hooks 를 사용해서 원하는 기능을 구현하고 컴포넌트에서 사용하고 싶은 값들을 반환해주면 된다.
(1) src/hooks 디렉터리를 만들어서 따로 분리해준다.
(2) use 라는 키워드로 시작하는 파일을 만든다. ex) useInputs.js
(3) useState/useEffect/useReducer/useCallback 등 Hooks 를 사용해서 원하는 기능을 구현한다.
예시로 useInputs.js 를 구현해보자
import { useState, useCallback } from 'react';
function useInputs(initialForm) {
const [form, setForm] = useState(initialForm);
// change
const onChange = useCallback(e => {
const { name, value } = e.target;
setForm(form => ({ ...form, [name]: value }));
}, []);
const reset = useCallback(() => setForm(initialForm), [initialForm]);
return [form, onChange, reset];
}
export default useInputs;
위 Custom Hook 을 App.js 에서 아래와 같이 사용할 수 있다.
// App.js
const [{ username, email }, onChange, reset] = useInputs({
username: '',
email: ''
});
...
const onCreate = useCallback(() => {
dispatch({
type: 'CREATE_USER',
user: {
id: nextId.current,
username,
email
}
});
reset();
nextId.current += 1;
}, [username, email, reset]);
출처 : https://react.vlpt.us/basic/21-custom-hook.html
21. 커스텀 Hooks 만들기 · GitBook
21. 커스텀 Hooks 만들기 이번에 사용 될 코드는 다음 CodeSandbox 에서 확인 할 수 있습니다. 컴포넌트를 만들다보면, 반복되는 로직이 자주 발생합니다. 예를 들어서 input 을 관리하는 코드는 관리 할
react.vlpt.us
'IT 기술 > [React] 기본' 카테고리의 다른 글
21. Context API 를 사용하여 전역 값을 관리하자 (0) | 2021.05.25 |
---|---|
20. React의 Hooks 총정리! (0) | 2021.05.25 |
18. useReducer 를 사용해서 상태(State) 업데이트 로직 분리해보기 (0) | 2021.05.25 |
17. React.memo 를 이용하여 컴포넌트 리렌더링을 방지하기 (0) | 2021.05.25 |
16. useCallback 이용하여 함수 재사용하기 (0) | 2021.05.25 |
Comments