[TIL] 엘리스 SW 엔지니어 트랙 Day 051
📖 오늘 배운 내용 - 2022.01.01
- Hooks
- Effect Hook
- useMemo
- useCallback
- useRef
- useReducer
📝 Hooks
- 컴포넌트에서 데이터를 관리(State)하고 데이터가 변경될 때 상호작용(Effect)을 하기 위해 사용한다.
const App = () => {
const [username, setUsername] = useState('')
return (
<div>
<h1>{username}님 환영합니다.</h1>
</div>
)
}
- Hook은 React 함수(컴포넌트, Hook) 내에서만 사용이 가능하다.
- Hook의 이름은 반드시
use
로 시작해야 된다. - 최상위 Level에서만 Hook을 호출할 수 있다. (if문, for문 안 쪽 또는 콜백 함수 내에서 호출 X)
- 즉, 첫 번째 중괄호 안에서만 사용해야 된다.
📝 State Hook과 Effect Hook
[React] 리액트 State Hook과 Effect Hook
🎯 State Hook과 Effect Hook 📝 State Hook const App = () => { // 일반적인 useState 사용법 const [state이름, setState이름] = useState(초기값) } useState는 컴포넌트 내 동적인 데이터를 관리할 수 있는..
lakelouise.tistory.com
📝 useMemo
[React] 리액트 useMemo 사용법
🎯 useMemo 사용법 const memoizedValue = useMemo(() => computerExpensiveValue(a, b), [a, b]) const App = () => { const [firstName, setFirstName] = useState('철수') const [lastName, setLastName] = us..
lakelouise.tistory.com
📝 useCallback
[React] 리액트 useCallback 사용법
🎯 useCallback 사용법 const memoizedValue = useCallback(() => { doSomething(a, b); }, [a, b]); const App = () => { const [firstName, setFirstName] = useState('철수') const [lastName, setLastName] =..
lakelouise.tistory.com
📝 useRef
[React] 리액트 useRef사용법
🎯 useRef사용법 const refContainer = useRef(initialValue); const App = () => { const inputRef = useRef(null) const onButtonClick = () => { inputRef.current.focus() } return ( input으로 포커스 ) }..
lakelouise.tistory.com
📝 useReducer
[React] 리액트 useReducer사용법
🎯 useReducer사용법 const [<상태 객체>, ] = useReducer( , <초기 상태>, <초기 함수>) import ReactDOM from 'react-dom'; import './index.css'; import * as serviceWorker from './serviceWorker'; import..
lakelouise.tistory.com
📝 나만의 Hook 만들기
- 자신만의 Hook을 만들면 컴포넌트 로직을 함수로 뽑아내어 재사용할 수 있다.
- UI 요소의 재사용성을 올리기 위해 컴포넌트를 만드는 것처럼, 로직의 재사용성을 높이기 위해서는 Custom Hook을 제작한다.
function useMyHook(args) {
const [status, setStatus] = useState(null);
// ...
return status;
}
- 한 로직이 여러 번 사용될 경우 함수를 분리하는 것처럼 Hook을 만드는 것일 뿐, 새로운 개념은 아니다.
- Hook의 이름은
use
로 시작해야 한다. - 한 Hook 내의 state는 공유되지 않는다.
📕 예시
import React from 'react';
import useToggle from './hooks/useToggle';
function App() {
const { isOn, toggle } = useToggle(false);
return (
<div className="App">
<button onClick={() => {
toggle();
}}>
{isOn ? "켜짐" : "꺼짐"}
</button>
</div>
);
}
export default App;
import { useState } from 'react';
const useToggle = (init) => {
const [isOn, setIsOn] = useState(init);
const toggle = () => {
setIsOn((current) => {
return !current;
});
}
return { isOn, toggle };
}
export default useToggle;
💡 오늘 깨달은 것
- Hook은 아주 특별한 함수이다.
- Hook은 클래스 안에서 동작하지 않기 때문에 클래스를 작성하지 않고 사용해야 한다.
- Hook을 이용하면 함수형 컴포넌트 안에서 state를 사용할 수 있다.
useState()
는 클래스 컴포넌트의this.state
가 제공하는 기능과 똑같다. 일반적으로 변수는 함수가 끝날 때 사라지지만 State 변수는 사라지지 않는다.- 콜백이란 함수의 인자로 넘겨진 함수로 기존 함수의 실행이 끝나고 난 뒤 실행되는 함수 또는 특정 시점이나 이벤트가 발생했을 때 시스템이 자동으로 실행시키는 함수를 말한다.
'프로그래밍 > Today I Learned' 카테고리의 다른 글
[TIL] 엘리스 SW 엔지니어 트랙 Day 053 (0) | 2022.01.11 |
---|---|
[TIL] 엘리스 SW 엔지니어 트랙 Day 052 (0) | 2022.01.10 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 050 (0) | 2022.01.03 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 049 (0) | 2021.12.31 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 048 (0) | 2021.12.30 |
댓글
이 글 공유하기
다른 글
-
[TIL] 엘리스 SW 엔지니어 트랙 Day 053
[TIL] 엘리스 SW 엔지니어 트랙 Day 053
2022.01.11 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 052
[TIL] 엘리스 SW 엔지니어 트랙 Day 052
2022.01.10 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 050
[TIL] 엘리스 SW 엔지니어 트랙 Day 050
2022.01.03 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 049
[TIL] 엘리스 SW 엔지니어 트랙 Day 049
2021.12.31