@@ -6,7 +6,7 @@ next: hooks-state.html
6
6
prev : hooks-intro.html
7
7
---
8
8
9
- * Hook* ์ React 16.8์ ์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ์
๋๋ค. * Hook* ์ ํด๋์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๋ state์ ๋ค๋ฅธ React์ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
9
+ * Hook* ์ React 16.8์ ์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ์
๋๋ค. * Hook* ์ class๋ฅผ ์์ฑํ์ง ์๊ณ ๋ state์ ๋ค๋ฅธ React์ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
10
10
11
11
Hook์ [ ํ์ ํธํ์ฑ] ( /docs/hooks-intro.html#no-breaking-changes ) ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๋ฌธ์๋ React์ ๊ฒฝํ์ด ์๋ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก Hook์ ๋ํด ๊ฐ๋ตํ ์๊ฐํฉ๋๋ค. ์ด ๋ฌธ์๋ ๋น ๋ฅด๊ฒ ์งํ๋ฉ๋๋ค. ํผ๋์ค๋ฌ์ด ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๋
ธ๋์ ๋ฐ์ค๋ฅผ ์ฐธ๊ณ ํ์ธ์.
12
12
@@ -18,7 +18,7 @@ Hook์ [ํ์ ํธํ์ฑ](/docs/hooks-intro.html#no-breaking-changes)์ ๊ฐ์ง
18
18
19
19
## ๐ State Hook {#state-hook}
20
20
21
- ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฐ๋จํ ์นด์ดํฐ ์์ ๊ฐ ์ฌ๊ธฐ ์์ต๋๋ค.
21
+ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฐ๋จํ ์นด์ดํฐ ์์๊ฐ ์ฌ๊ธฐ ์์ต๋๋ค.
22
22
23
23
``` js{1,4,5}
24
24
import React, { useState } from 'react';
@@ -38,11 +38,11 @@ function Example() {
38
38
}
39
39
```
40
40
41
- ์ฌ๊ธฐ์ ` useState ` ๊ฐ ๋ฐ๋ก * Hook* ์
๋๋ค(์ด๊ฒ ๋ฌด์จ ์๋ฏธ์ธ์ง๋ ์์ผ๋ก ์์๋ณด๊ฒ ์ต๋๋ค). Hook์ ํธ์ถํด ํจ์ ์ปดํฌ๋ํธ(function component) ์์ state๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด state๋ ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง ๋์ด๋ ๊ทธ๋๋ก ์ ์ง๋ ๊ฒ์
๋๋ค. ` useState ` ๋ * ํ์ฌ์* state ๊ฐ๊ณผ ์ด ๊ฐ์ ์
๋ฐ์ดํธํ๋ ํจ์๋ฅผ ์์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ํจ์๋ฅผ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ๋ค๋ฅธ ๊ณณ์์ ํธ์ถํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํด๋์ค์ ` this.setState ` ์ ๊ฑฐ์ ์ ์ฌํ์ง๋ง, ์ด์ state์ ์ state๋ฅผ mergeํ์ง ์๋๋ค๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค. (` useState ` ์ ` this.state ` ๋ฅผ ๋น๊ตํ๋ ์์๊ฐ [ Using the State Hook] ( /docs/hooks-state.html ) ๋ฌธ์์ ์์ผ๋ ํ๋ฒ ๋ณด์ธ์.)
41
+ ์ฌ๊ธฐ์ ` useState ` ๊ฐ ๋ฐ๋ก * Hook* ์
๋๋ค(์ด๊ฒ ๋ฌด์จ ์๋ฏธ์ธ์ง๋ ์์ผ๋ก ์์๋ณด๊ฒ ์ต๋๋ค). Hook์ ํธ์ถํด ํจ์ ์ปดํฌ๋ํธ(function component) ์์ state๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด state๋ ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง ๋์ด๋ ๊ทธ๋๋ก ์ ์ง๋ ๊ฒ์
๋๋ค. ` useState ` ๋ * ํ์ฌ์* state ๊ฐ๊ณผ ์ด ๊ฐ์ ์
๋ฐ์ดํธํ๋ ํจ์๋ฅผ ์์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ํจ์๋ฅผ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ๋ค๋ฅธ ๊ณณ์์ ํธ์ถํ ์ ์์ต๋๋ค. ์ด๊ฒ์ class์ ` this.setState ` ์ ๊ฑฐ์ ์ ์ฌํ์ง๋ง, ์ด์ state์ ์๋ก์ด state๋ฅผ ํฉ์น์ง ์๋๋ค๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค. (` useState ` ์ ` this.state ` ๋ฅผ ๋น๊ตํ๋ ์์๊ฐ [ Using the State Hook] ( /docs/hooks-state.html ) ๋ฌธ์์ ์์ผ๋ ํ๋ฒ ๋ณด์ธ์.)
42
42
43
- ` useState ` ๋ ์ธ์๋ก ์ด๊ธฐ state ๊ฐ์ ํ๋ ๋ฐ์ต๋๋ค. ์นด์ดํฐ๋ 0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ ์ ์์ ์์๋ ์ด๊ธฐ๊ฐ์ผ๋ก ` 0 ` ์ ๋ฃ์ด์ค ๊ฒ์
๋๋ค. ` this.state ` ์๋ ๋ฌ๋ฆฌ ` setState ` Hook์ state๋ ๊ฐ์ฒด์ผ ํ์๊ฐ ์์ต๋๋ค. ๋ฌผ๋ก ์ํ๋ค๋ฉด ๊ทธ๋ ๊ฒ๋ ๊ฐ๋ฅํ์ง๋ง์. ์ด ์ด๊ธฐ๊ฐ์ ์ฒซ ๋ฒ์งธ ๋ ๋๋ง์๋ง ๋ฑ ํ๋ฒ ์ฌ์ฉ๋ฉ๋๋ค.
43
+ ` useState ` ๋ ์ธ์๋ก ์ด๊ธฐ state ๊ฐ์ ํ๋ ๋ฐ์ต๋๋ค. ์นด์ดํฐ๋ 0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ ์ ์์์์๋ ์ด๊ธฐ๊ฐ์ผ๋ก ` 0 ` ์ ๋ฃ์ด์ค ๊ฒ์
๋๋ค. ` this.state ` ์๋ ๋ฌ๋ฆฌ ` setState ` Hook์ state๋ ๊ฐ์ฒด์ผ ํ์๊ฐ ์์ต๋๋ค. ๋ฌผ๋ก ์ํ๋ค๋ฉด ๊ทธ๋ ๊ฒ๋ ๊ฐ๋ฅํ์ง๋ง์. ์ด ์ด๊ธฐ๊ฐ์ ์ฒซ ๋ฒ์งธ ๋ ๋๋ง์๋ง ๋ฑ ํ๋ฒ ์ฌ์ฉ๋ฉ๋๋ค.
44
44
45
- #### ๋ณต์์- state-๋ณ์- ์ ์ธํ๊ธฐ {#declaring-multiple-state-variables}
45
+ #### ์ฌ๋ฌ state ๋ณ์ ์ ์ธํ๊ธฐ {#declaring-multiple-state-variables}
46
46
47
47
ํ๋์ ์ปดํฌ๋ํธ ๋ด์์ State Hook์ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
48
48
@@ -60,9 +60,9 @@ function ExampleWithManyStates() {
60
60
61
61
#### ๊ทผ๋ฐ Hook์ด ๋ญ๊ฐ์? {#but-what-is-a-hook}
62
62
63
- Hook์ ํจ์ ์ปดํฌ๋ํธ์์ React state์ ์๋ช
์ฃผ๊ธฐ ๊ธฐ๋ฅ(lifecycle features)์ "์ฐ๋(hook into)"ํ ์ ์๊ฒ ํด์ฃผ๋ ํจ์์
๋๋ค. Hook์ ํด๋์ค ์์์๋ ๋์ํ์ง ์์ต๋๋ค. ๋์ ํด๋์ค ์์ด React๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์
๋๋ค. (ํ์ง๋ง ์ด๋ฏธ ์ง๋์ ์ปดํฌ๋ํธ๋ฅผ ๋ชจ์กฐ๋ฆฌ ์ฌ์์ฑํ๋ ๊ฒ์ [ ๊ถ์ฅํ์ง ์์ต๋๋ค] ( /docs/hooks-intro.html#gradual-adoption-strategy ) . ๋์ ์๋ก ์์ฑํ๋ ์ปดํฌ๋ํธ๋ถํฐ๋ Hook์ ์ด์ฉํ์๋ฉด ๋ฉ๋๋ค.)
63
+ Hook์ ํจ์ ์ปดํฌ๋ํธ์์ React state์ ์๋ช
์ฃผ๊ธฐ ๊ธฐ๋ฅ(lifecycle features)์ "์ฐ๋(hook into)"ํ ์ ์๊ฒ ํด์ฃผ๋ ํจ์์
๋๋ค. Hook์ class ์์์๋ ๋์ํ์ง ์์ต๋๋ค. ๋์ class ์์ด React๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฒ์
๋๋ค. (ํ์ง๋ง ์ด๋ฏธ ์ง๋์ ์ปดํฌ๋ํธ๋ฅผ ๋ชจ์กฐ๋ฆฌ ์ฌ์์ฑํ๋ ๊ฒ์ [ ๊ถ์ฅํ์ง ์์ต๋๋ค] ( /docs/hooks-intro.html#gradual-adoption-strategy ) . ๋์ ์๋ก ์์ฑํ๋ ์ปดํฌ๋ํธ๋ถํฐ๋ Hook์ ์ด์ฉํ์๋ฉด ๋ฉ๋๋ค.)
64
64
65
- React๋ ` useState ` ๊ฐ์ ๋ด์ฅ Hook์ ๋ช ๊ฐ์ง ์ ๊ณตํฉ๋๋ค. ์ปดํฌ๋ํธ ๊ฐ์ stateful ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด์ custom Hook์ ๋ง๋๋ ๊ฒ๋ ๋ฌผ๋ก ๊ฐ๋ฅํฉ๋๋ค. ์ผ๋จ ๋ด์ฅ Hook์ ๋จผ์ ๋ณด๊ฒ ์ต๋๋ค.
65
+ React๋ ` useState ` ๊ฐ์ ๋ด์ฅ Hook์ ๋ช ๊ฐ์ง ์ ๊ณตํฉ๋๋ค. ์ปดํฌ๋ํธ ๊ฐ์ ์ํ ๊ด๋ จ ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด Hook์ ์ง์ ๋ง๋๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ผ๋จ ๋ด์ฅ Hook์ ๋จผ์ ๋ณด๊ฒ ์ต๋๋ค.
66
66
67
67
> ์์ธํ ์ค๋ช
68
68
>
@@ -72,9 +72,9 @@ React๋ `useState` ๊ฐ์ ๋ด์ฅ Hook์ ๋ช ๊ฐ์ง ์ ๊ณตํฉ๋๋ค. ์ปดํฌ๋
72
72
73
73
React ์ปดํฌ๋ํธ ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๊ตฌ๋
ํ๊ณ , DOM์ ์ง์ ์กฐ์ํ๋ ์์
์ ์ด์ ์๋ ์ข
์ข
ํด๋ณด์
จ์ ๊ฒ์
๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฐ ๋ชจ๋ ๋์์ "side effects"(๋๋ ์งง๊ฒ "effects")๋ผ๊ณ ํฉ๋๋ค. ์๋ํ๋ฉด ์ด๊ฒ์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ํฅ์ ์ค ์๋ ์๊ณ , ๋ ๋๋ง ๊ณผ์ ์์๋ ๊ตฌํํ ์ ์๋ ์์
์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
74
74
75
- Effect Hook, ์ฆ ` useEffect ` ๋ ํจ์ ์ปดํฌ๋ํธ ๋ด์์ ์ด๋ฐ side effects๋ฅผ ์ํํ ์ ์๊ฒ ํด์ค๋๋ค. React ํด๋์ค์ ` componentDidMount ` ๋ ` componentDidUpdate ` , ` componentWillUnmount ` ์ ๊ฐ์ ๋ชฉ์ ์ผ๋ก ์ ๊ณต๋์ง๋ง, ํ๋์ API๋ก ํตํฉ๋ ๊ฒ์
๋๋ค. (` useEffect ` ์ ์ด ์ธ ๊ฐ์ง ๋ฉ์๋๋ฅผ ๋น๊ตํ๋ ์์๊ฐ [ Using the Effect Hook] ( /docs/hooks-effect.html ) ๋ฌธ์์ ์์ต๋๋ค.)
75
+ Effect Hook, ์ฆ ` useEffect ` ๋ ํจ์ ์ปดํฌ๋ํธ ๋ด์์ ์ด๋ฐ side effects๋ฅผ ์ํํ ์ ์๊ฒ ํด์ค๋๋ค. React class์ ` componentDidMount ` ๋ ` componentDidUpdate ` , ` componentWillUnmount ` ์ ๊ฐ์ ๋ชฉ์ ์ผ๋ก ์ ๊ณต๋์ง๋ง, ํ๋์ API๋ก ํตํฉ๋ ๊ฒ์
๋๋ค. (` useEffect ` ์ ์ด ์ธ ๊ฐ์ง ๋ฉ์๋๋ฅผ ๋น๊ตํ๋ ์์๊ฐ [ Using the Effect Hook] ( /docs/hooks-effect.html ) ๋ฌธ์์ ์์ต๋๋ค.)
76
76
77
- ์๋ฅผ ๋ค์ด, ์ด ์์ ๋ React๊ฐ DOM์ ์
๋ฐ์ดํธํ ๋ค์ ๋ฌธ์์ ํ์ดํ์ ๋ฐ๊พธ๋ ์ปดํฌ๋ํธ์
๋๋ค.
77
+ ์๋ฅผ ๋ค์ด, ์ด ์์๋ React๊ฐ DOM์ ์
๋ฐ์ดํธํ ๋ค์ ๋ฌธ์์ ํ์ดํ์ ๋ฐ๊พธ๋ ์ปดํฌ๋ํธ์
๋๋ค.
78
78
79
79
``` js{1,6-10}
80
80
import React, { useState, useEffect } from 'react';
@@ -99,9 +99,9 @@ function Example() {
99
99
}
100
100
```
101
101
102
- ` useEffect ` ๋ฅผ ์ฌ์ฉํ๋ฉด, React๋ DOM์ ๋ฐ๊พผ ๋ค์ "effect" ํจ์๋ฅผ ์คํํ ๊ฒ์
๋๋ค. Effects๋ ์ปดํฌ๋ํธ ์์ ์ ์ธ๋์ด์๊ธฐ ๋๋ฌธ์ props์ state์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก React๋ ๋งค ๋ ๋๋ง ์ดํ์ effects๋ฅผ ์คํํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ ๋๋ง๋ * ํฌํจํด์์* . (ํด๋์ค ์๋ช
์ฃผ๊ธฐ(lifecycle)์ ๋ค๋ฅธ ์ ์ [ Using the Effect Hook] ( /docs/hooks-effect.html ) ๋ฌธ์์์ ๋ ์์ธํ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.)
102
+ ` useEffect ` ๋ฅผ ์ฌ์ฉํ๋ฉด, React๋ DOM์ ๋ฐ๊พผ ๋ค์ "effect" ํจ์๋ฅผ ์คํํ ๊ฒ์
๋๋ค. Effects๋ ์ปดํฌ๋ํธ ์์ ์ ์ธ๋์ด์๊ธฐ ๋๋ฌธ์ props์ state์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก React๋ ๋งค ๋ ๋๋ง ์ดํ์ effects๋ฅผ ์คํํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ ๋๋ง๋ * ํฌํจํด์์* . (Class ์๋ช
์ฃผ๊ธฐ(lifecycle)์ ๋ค๋ฅธ ์ ์ [ Using the Effect Hook] ( /docs/hooks-effect.html ) ๋ฌธ์์์ ๋ ์์ธํ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.)
103
103
104
- Effect๋ฅผ "ํด์ "ํ ํ์๊ฐ ์๋ค๋ฉด, ํด์ ํ๋ ํจ์๋ฅผ ๋ฐํํด์ฃผ๋ฉด ๋ฉ๋๋ค. ์ด๋ ์ ํ์ ์
๋๋ค(optional). ์๋ฅผ ๋ค์ด, ์ด ์ปดํฌ๋ํธ๋ ์น๊ตฌ์ ์จ๋ผ์ธ ์ฌ๋ถ๋ฅผ ๊ตฌ๋
ํ๋ effect๋ฅผ ์ฌ์ฉํ๊ณ , ๊ตฌ๋
์ ํด์งํจ์ผ๋ก์จ ํด์ ํด์ค๋๋ค.
104
+ Effect๋ฅผ "ํด์ "ํ ํ์๊ฐ ์๋ค๋ฉด, ํด์ ํ๋ ํจ์๋ฅผ ๋ฐํํด์ฃผ๋ฉด ๋ฉ๋๋ค. ์ด๋ ์ ํ์ ์
๋๋ค(optional). ์๋ฅผ ๋ค์ด, ์ด ์ปดํฌ๋ํธ๋ ์น๊ตฌ์ ์ ์ ์ํ๋ฅผ ๊ตฌ๋
ํ๋ effect๋ฅผ ์ฌ์ฉํ๊ณ , ๊ตฌ๋
์ ํด์งํจ์ผ๋ก์จ ํด์ ํด์ค๋๋ค.
105
105
106
106
``` js{10-16}
107
107
import React, { useState, useEffect } from 'react';
@@ -128,7 +128,7 @@ function FriendStatus(props) {
128
128
}
129
129
```
130
130
131
- ์ด ์์ ์์ ์ปดํฌ๋ํธ๊ฐ unmount๋ ๋ React๋ ` ChatAPI ` ์์ ๊ตฌ๋
์ ํด์งํ ๊ฒ์
๋๋ค. ๋ํ ์ฌ ๋ ๋๋ง์ด ์ผ์ด๋ effect๋ฅผ ์ฌ์คํํ๊ธฐ ์ ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌ๋
์ ํด์งํฉ๋๋ค. (๋ง์ฝ ์ํ๋ค๋ฉด ` props.friend.id ` ๊ฐ ๋ฐ๋์ง ์์์ ๋ [ ์ฌ๊ตฌ๋
์ ๊ฑด๋๋ฐ๋๋ก ์ค์ ] ( /docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects ) ํ ์ ์์ต๋๋ค.)
131
+ ์ด ์์์์ ์ปดํฌ๋ํธ๊ฐ unmount๋ ๋ React๋ ` ChatAPI ` ์์ ๊ตฌ๋
์ ํด์งํ ๊ฒ์
๋๋ค. ๋ํ ์ฌ ๋ ๋๋ง์ด ์ผ์ด๋ effect๋ฅผ ์ฌ์คํํ๊ธฐ ์ ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌ๋
์ ํด์งํฉ๋๋ค. (๋ง์ฝ ์ํ๋ค๋ฉด ` props.friend.id ` ๊ฐ ๋ฐ๋์ง ์์์ ๋ [ ์ฌ๊ตฌ๋
์ ๊ฑด๋๋ฐ๋๋ก ์ค์ ] ( /docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects ) ํ ์ ์์ต๋๋ค.)
132
132
133
133
` useState ` ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปดํฌ๋ํธ ๋ด์์ ์ฌ๋ฌ ๊ฐ์ effect๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
134
134
@@ -153,7 +153,7 @@ function FriendStatusWithCounter(props) {
153
153
// ...
154
154
```
155
155
156
- Hook์ ์ฌ์ฉํ๋ฉด -- ๊ตฌ๋
์ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ๋ ๋ก์ง ๊ฐ์ -- ์๋ก ๊ด๋ จ ์๋ ์ฝ๋๋ค์ ํ๊ตฐ๋ฐ์ ๋ชจ์์ ์์ฑํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด ํด๋์ค ์ปดํฌ๋ํธ์์๋ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋(lifecycle methods) ๊ฐ๊ฐ์ ์ชผ๊ฐ์ ๋ฃ์ด์ผ๋ง ํ์ต๋๋ค.
156
+ Hook์ ์ฌ์ฉํ๋ฉด ๊ตฌ๋
์ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ๋ ๋ก์ง๊ณผ ๊ฐ์ด ์๋ก ๊ด๋ จ ์๋ ์ฝ๋๋ค์ ํ๊ตฐ๋ฐ์ ๋ชจ์์ ์์ฑํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด class ์ปดํฌ๋ํธ์์๋ ์๋ช
์ฃผ๊ธฐ ๋ฉ์๋(lifecycle methods) ๊ฐ๊ฐ์ ์ชผ๊ฐ์ ๋ฃ์ด์ผ๋ง ํ์ต๋๋ค.
157
157
158
158
> ์์ธํ ์ค๋ช
159
159
>
@@ -174,9 +174,9 @@ Hook์ ๊ทธ๋ฅ JavaScript ํจ์์ด์ง๋ง, ๋ ๊ฐ์ง ๊ท์น์ ์ค์ํด์ผ ํฉ
174
174
175
175
## ๐ก ๋๋ง์ Hook ๋ง๋ค๊ธฐ {#building-your-own-hooks}
176
176
177
- ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๊ฐ๋ stateful ๋ก์ง์ ์ปดํฌ๋ํธ ๊ฐ์ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง ์์๋๋ฐ, [ higher-order components] ( /docs/higher-order-components.html ) ์ [ render props] ( /docs/render-props.html ) ๊ฐ ๋ฐ๋ก ๊ทธ๊ฒ์
๋๋ค. Custom Hook์ ์ด๋ค ๋๊ณผ๋ ๋ฌ๋ฆฌ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ๋ ์ด๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋๋ค.
177
+ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๊ฐ๋ ์ํ ๊ด๋ จ ๋ก์ง์ ์ปดํฌ๋ํธ ๊ฐ์ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง ์์๋๋ฐ, [ higher-order components] ( /docs/higher-order-components.html ) ์ [ render props] ( /docs/render-props.html ) ๊ฐ ๋ฐ๋ก ๊ทธ๊ฒ์
๋๋ค. Custom Hook์ ์ด๋ค ๋๊ณผ๋ ๋ฌ๋ฆฌ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ๋ ์ด๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋๋ค.
178
178
179
- ์น๊ตฌ์ ์จ๋ผ์ธ ์ฌ๋ถ๋ฅผ ๊ตฌ๋
ํ๊ธฐ ์ํด์ ` useState ` ์ ` useEffect ` Hook์ ์ฌ์ฉํ ` FriendStatus ` ์ปดํฌ๋ํธ ์์ ๋ฅผ ๋ค์ ํ๋ฒ ๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ก์ง์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฌ์ฉํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ์ ํด๋ด
์๋ค.
179
+ ์น๊ตฌ์ ์ ์ ์ํ๋ฅผ ๊ตฌ๋
ํ๊ธฐ ์ํด์ ` useState ` ์ ` useEffect ` Hook์ ์ฌ์ฉํ ` FriendStatus ` ์ปดํฌ๋ํธ ์์๋ฅผ ๋ค์ ํ๋ฒ ๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ก์ง์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฌ์ฉํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ์ ํด๋ด
์๋ค.
180
180
181
181
๋จผ์ , ์ด ๋ก์ง์ ` useFriendStatus ` ๋ผ๋ custom Hook์ผ๋ก ๋ฝ์๋
๋๋ค.
182
182
@@ -201,7 +201,7 @@ function useFriendStatus(friendID) {
201
201
}
202
202
```
203
203
204
- ์ด Hook์ ` friendID ` ๋ฅผ ์ธ์๋ก ๋ฐ์์ ์น๊ตฌ์ ์จ๋ผ์ธ ์ฌ๋ถ๋ฅผ ๋ฐํํด์ค๋๋ค.
204
+ ์ด Hook์ ` friendID ` ๋ฅผ ์ธ์๋ก ๋ฐ์์ ์น๊ตฌ์ ์ ์ ์ํ๋ฅผ ๋ฐํํด์ค๋๋ค.
205
205
206
206
์ด์ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
207
207
@@ -228,7 +228,7 @@ function FriendListItem(props) {
228
228
}
229
229
```
230
230
231
- ๊ฐ ์ปดํฌ๋ํธ์ state๋ ์์ ํ ๋
๋ฆฝ์ ์
๋๋ค. Hook์ state ๊ทธ ์์ฒด๊ฐ ์๋๋ผ, * stateful logic * ์ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ค์ ๋ก ๊ฐ๊ฐ์ Hook * ํธ์ถ* ์ ์์ ํ ๋
๋ฆฝ๋ state๋ฅผ ๊ฐ์ง๋๋ค. ๊ทธ๋์ ์ฌ์ง์ด๋ ํ ์ปดํฌ๋ํธ ์์์ ๊ฐ์ custom Hook์ ๋ ๋ฒ ์ธ ์๋ ์์ต๋๋ค.
231
+ ๊ฐ ์ปดํฌ๋ํธ์ state๋ ์์ ํ ๋
๋ฆฝ์ ์
๋๋ค. Hook์ state ๊ทธ ์์ฒด๊ฐ ์๋๋ผ, * ์ํ ๊ด๋ จ ๋ก์ง * ์ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ค์ ๋ก ๊ฐ๊ฐ์ Hook * ํธ์ถ* ์ ์์ ํ ๋
๋ฆฝ๋ state๋ฅผ ๊ฐ์ง๋๋ค. ๊ทธ๋์ ์ฌ์ง์ด๋ ํ ์ปดํฌ๋ํธ ์์์ ๊ฐ์ custom Hook์ ๋ ๋ฒ ์ธ ์๋ ์์ต๋๋ค.
232
232
233
233
Custom Hook์ ๊ธฐ๋ฅ์ด๋ผ๊ธฐ๋ณด๋ค๋ ์ปจ๋ฒค์
(convention)์ ๊ฐ๊น์ต๋๋ค. ์ด๋ฆ์ด "` use ` "๋ก ์์ํ๊ณ , ์์์ ๋ค๋ฅธ Hook์ ํธ์ถํ๋ค๋ฉด ๊ทธ ํจ์๋ฅผ custom Hook์ด๋ผ๊ณ ๋ถ๋ฅผ ์ ์์ต๋๋ค. ` useSomething ` ์ด๋ผ๋ ๋ค์ด๋ฐ ์ปจ๋ฒค์
์ linter ํ๋ฌ๊ทธ์ธ์ด Hook์ ์ธ์ํ๊ณ ๋ฒ๊ทธ๋ฅผ ์ฐพ์ ์ ์๊ฒ ํด์ค๋๋ค.
234
234
@@ -268,4 +268,4 @@ function Todos() {
268
268
269
269
๋ํ [ Hooks API reference] ( /docs/hooks-reference.html ) ์ [ Hooks FAQ] ( /docs/hooks-faq.html ) ๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
270
270
271
- ๋ง์ง๋ง์ผ๋ก, ์ฐ๋ฆฌ๊ฐ * ์* Hook์ ์ถ๊ฐํ๋์ง ๊ทธ ์ด์ ์, -- ์ฑ์ ์ฌ์์ฑํ์ง ์๊ณ ๋ -- ํด๋์ค์ ํจ๊ป Hook์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ [ ์๊ฐ ํ์ด์ง] ( /docs/hooks-intro.html ) ๋ ๋์น์ง ๋ง์ธ์.
271
+ ๋ง์ง๋ง์ผ๋ก, ์ฐ๋ฆฌ๊ฐ * ์* Hook์ ์ถ๊ฐํ๋์ง ๊ทธ ์ด์ ์ ์ฑ์ ์ฌ์์ฑํ์ง ์๊ณ ๋ class์ ํจ๊ป Hook์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ [ ์๊ฐ ํ์ด์ง] ( /docs/hooks-intro.html ) ๋ ๋์น์ง ๋ง์ธ์.
0 commit comments