ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ State Hook
๋ค์์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ฐ์ด 1์ฉ ์ฆ๊ฐํ๋ ๊ฐ๋จํ ์นด์ดํฐ ์์ ์ฝ๋์ด๋ค.
import React, {useState} from 'react';
function MyComponent() {
// "count"๋ผ๋ ์ ์ํ ๋ณ์ ์ ์ธ
const[count, setCount] = useState(0);
return (
<div>
<p>You click {count} times </p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
export default MyComponent;
- ์ฌ๊ธฐ์ ์ฌ์ฉํ useState๊ฐ ํ (Hook)์ด๋ค.
- hook์ ํธ์ถํด ํจ์ ์ปดํฌ๋ํธ ์์ state ์ถ๊ฐ
- ์ด state๋ ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง ๋์ด๋ ๊ทธ๋๋ก ์ ์ง
useState ํน์ง
- ํ์ฌ์ state๊ฐ๊ณผ ์ด ๊ฐ์ ์ ๋ฐ์ดํธ ํ๋ ํจ์์ ์
- ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ๋ค๋ฅธ ๊ณณ์ ํธ์ถ ๊ฐ๋ฅ
- class์ this.setState์ ๊ฑฐ์ ์ ์ฌ
- ์ด์ state์ ์๋ก์ด state๋ฅผ ํฉ์น์ง ์๋๋ค๋ ์ฐจ์ด์
- setState Hook์ state๋ ๊ฐ์ฒด์ผ ํ์ ์๋ค๋ ์ฐจ์ด์ (๊ฐ์ฒด์ฌ๋ ๋๊ธดํจ)
- ์ธ์๋ก ์ด๊ธฐ state๊ฐ์ ํ๋ ๋ฐ์ (์ ์์์์๋ 0์ ๋ฐ์)
- ์ด ์ด๊ธฐ๊ฐ์ ์ฒซ๋ฒ์งธ ๋ ๋๋ง์๋ง ๋ฑ ํ๋ฒ ์ฌ์ฉ๋จ
์ฌ๋ฌ state ๋ณ์ ์ ์ธํ๊ธฐ
ํ๋์ ์ปดํฌ๋ํธ ๋ด์์ State Hook์ ์ฌ๋ฌ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅ!
-> ๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด(destructuring) ๋ฌธ๋ฒ ์ฌ์ฉ
- useState๋ก ํธ์ถ๋ state๋ณ์๋ค์ ๋ค๋ฅธ ๋ณ์๋ช ์ผ๋ก ํ ๋น ๊ฐ๋ฅํ๊ฒํจ
- ๋ณ์๋ช ์ useState API์ ๊ด๋ จ์ด ์๊ณ , ๋งค๋ฒ ๋ ๋๋ง ํ ๋ useState๊ฐ ์ฌ์ฉ๋ ์์๋๋ก ์คํ
๊ทธ๋ฐ๋ฐ Hook์ด ๋ญ๊ฐ์?
ํจ์!
์ด๋ค ํจ์..?
ํจ์ ์ปดํฌ๋ํธ์์ React State์ ์๋ช ์ฃผ๊ธฐ ๊ธฐ๋ฅ(lifecycle features)์ "์ฐ๋(hook into)"ํ ์ ์๊ฒ ํด์ฃผ๋ ํจ์
Hook ํน์ง
- ํด๋์ค ์์์๋ ๋์X
- ๋์ ํด๋์ค ์์ด ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ
- But ์ด๋ฏธ ์ง๋์ ์ปดํฌ๋ํธ๋ฅผ ๋ชจ์กฐ๋ฆฌ ์ฌ์์ฑํ๋ ๊ฒ ๊ถ์ฅ X!
์๋ก ์์ฑํ๋ ์ปดํฌ๋ํธ๋ถํฐ Hook ์ด์ฉํ๋ฉด ๋จ - ๋ด์ฅ Hook๋ ์๊ณ , ๋ด๊ฐ Hook์ ์ง์ ๋ง๋ค ์๋ ์์
โก๏ธ Effect Hook
side effect๋? (effects๋ผ๊ณ ๋ ํจ)
์ปดํฌ๋ํธ ์์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ฑฐ๋ ๊ตฌ๋ , DOM์ ์ง์ ์กฐ์ํ๋ ๋์
(๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ํฅ์ ์ค ์ ์์. ๋ ๋๋ง ๊ณผ์ ์์๋ ๊ตฌํํ ์ ์๋ ์์ ์)
Effect Hook - useEffect
ํจ์ ์ปดํฌ๋ํธ ๋ด์์ side effect๋ฅผ ์ํํ ์ ์๊ฒ ํด์ค
(React class์ componentDidMount, componentDidUpdate, componentWillUnmount์ ๊ฐ์ ๋ชฉ์ ์ผ๋ก ์ ๊ณต๋์ง๋ง,
ํ๋์ API๋ก ํตํฉ๋ ๊ฒ)
๋ค์ ์์๋ React๊ฐ DOM์ ์ ๋ฐ์ดํธํ ๋ค์ ๋ฌธ์์ ํ์ดํ์ ๋ฐ๊พธ๋ ์ปดํฌ๋ํธ์ด๋ค.
import React, { useState, useEffect } from 'react';
function MyComponent() {
const [count, setCount] = useState(0);
//componentDidMount, componentDidUpdate์ ๋น์ท
useEffect(() => {
// ๋ธ๋ผ์ฐ์ API๋ฅผ ์ด์ฉํด ๋ฌธ์ ํ์ดํ์ ์
๋ฐ์ดํธ
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You click {count} times </p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
export default MyComponent;
- useEffect : React๋ DOM์ ๋ฐ๊พผ ๋ค์์ effect ํจ์ ์คํ
- Effects๋ ์ปดํฌ๋ํธ ์์ ์ ์ธ๋์ด์๊ธฐ ๋๋ฌธ์ props์ state์ ์ ๊ทผ ๊ฐ๋ฅ
- ๊ธฐ๋ณธ์ ์ผ๋ก React๋ ๋งค ๋ ๋๋ง ์ดํ์ effects ์คํ (์ฒซ ๋ ๋๋ง ํฌํจ)
- ** ์๋ช ์ฃผ๊ธฐ์ ๋ค๋ฅธ ์ ์ ๋์ค์ ์์ธํ ๋ค๋ฃจ๊ฒ ์.
Effect๋ฅผ "ํด์ "ํ๊ณ ์ถ๋ค๋ฉด?
-> ํด์ ํ๋ ํจ์ ๋ฐํ (์ ํ์ )
๋ค์์ ์น๊ตฌ์ ์ ์ ์ํ๋ฅผ ๊ตฌ๋ ํ๋ effect๋ฅผ ์ฌ์ฉํ๊ณ , ๊ตฌ๋ ์ ํด์งํจ์ผ๋ก์จ effect ํด์ ํ๋ ์ปดํฌ๋ํธ์ด๋ค.
(ChatAPI ๋ถ๋ถ์ ์๋ฌ๊ฐ ๋์, 4. Effect Hook ๊ณต๋ถํ๋ฉด์ ๋ค์ ์๊ฐํด๋ณด๊ธฐ)
[ tlog.tammolo.com/blog/React-Hooks-cbf3d997cecb419fa570d0964d238629/ ] ํน์ ์ฐธ๊ณ ํ ๊น๋ด ์ฒจ๋ถํ๋ ๋งํฌ^.^
์ถ๊ฐ +) effect๊ฐ ์๊ณ ์๊ณ ์ ์ฐจ์ด์
โ ํญ ๋ถ๋ถ ์ ๋ด๋ด โ ํ๋น์ฝ ์๋ ๋ถ๋ถ โ
1) effect ์๋ ๊ฒฝ์ฐ
2) effect ์๋ ๊ฒฝ์ฐ
๋ฒ์ธ ) ' '์ ` `์ ์ฐจ์ด
' ' | ` ` | |
+ ์ฌ์ฉ ์ฌ๋ถ | + ์ฌ์ฉ ํด์ผํจ | + ์ฌ์ฉ ์ํด๋ ๋จ |
์ | const userInfo = 'User info: ' + name + ' ' + surname + ' ' + telephone; | const userInfo = `User info: ${name} ${surname} ${telephone}`; |
โ๏ธ Hook ์ฌ์ฉ ๊ท์น
Hook์ ๊ทธ๋ฅ JS ํจ์์ด์ง๋ง, ๋ ๊ฐ์ง ๊ท์น์ ์ค์ํด์ผ ํจ
- ์ต์์(at the top level)์์๋ง Hook ํธ์ถ
- ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ์ค์ฒฉ๋ ํจ์ ๋ด์์ ์คํX
- React ํจ์ ์ปดํฌ๋ํธ ๋ด์์๋ง Hook ํธ์ถ
- ์ผ๋ฐ JS์์ Hook ํธ์ถ X
- ์ง์ ์์ฑํ custom Hook ๋ด์์๋ ํ ํธ์ถ ๊ฐ๋ฅ
๐ก ๋๋ง์ Hook ๋ง๋ค๊ธฐ
state ๊ด๋ จ ๋ก์ง์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์ ์ฌ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด?
-> 1. higher-order components
-> 2. render props
์ด์ ๋ฌ๋ฆฌ Custom Hook์ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ๋ ๊ฐ๋ฅ
- Total
- Today
- Yesterday
- docker
- ๋จ๊ธฐ์ง์ค๊ณผ์
- ๋ฆฌ์กํธ ๊ธฐ์ด
- ๋ฆฌ์กํธ state
- ML
- ๋ฆฌ์กํธ ํ
- ๋ฆฌ๋์ค
- ๋จธ์ ๋ฌ๋
- ๋ฆฌ์กํธ ๋ ๋๋ง
- ๋์ปค
- ๊ตฌ๊ธํด๋ผ์ฐ๋ํ๋ซํผ
- ์ํ์ฝ๋ฉ ๋ฆฌ์กํธ
- React
- Cloud
- ๊ตฌ๊ธ
- ๋ฆฌ์กํธ useEffect
- ๋ฆฌ์กํธ ๊ณต์๋ฌธ์
- ์ปดํฌ๋ํธ
- ํ ์ํ๋ก์ฐ
- ๋ฆฌ์กํธ setState
- ํด๋ผ์ฐ๋
- ๋ฆฌ๋์ค store
- ๋ฆฌ์กํธ
- GCP
- React Hook
- Docker&Kubernetes:์ค์ ๊ฐ์ด๋-2022๋ ํ
- machine learning
- React DOM
- ๋ฆฌ์กํธ ์ปดํฌ๋ํธ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |