Skip to content

Commit 0da537e

Browse files
committed
docs: update rules-of-hooks.md
1 parent f39068a commit 0da537e

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

โ€Žsrc/content/reference/rules/rules-of-hooks.mdโ€Ž

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Hook์˜ ๊ทœ์น™
33
---
44

55
<Intro>
6-
Hook์€ JavaScript ํ•จ์ˆ˜๋กœ ์ •์˜๋˜์ง€๋งŒ ํ˜ธ์ถœ ์œ„์น˜์— ์ œ์•ฝ์ด ์žˆ๋Š” ํŠน๋ณ„ํ•œ ์œ ํ˜•์˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ๋กœ์ง์ž…๋‹ˆ๋‹ค.
6+
Hook์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜๋กœ ์ •์˜๋˜์ง€๋งŒ ํ˜ธ์ถœ ์œ„์น˜์— ์ œ์•ฝ์ด ์žˆ๋Š” ํŠน๋ณ„ํ•œ ์œ ํ˜•์˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ๋กœ์ง์ž…๋‹ˆ๋‹ค.
77
</Intro>
88

99
<InlineToc />
@@ -12,7 +12,7 @@ Hook์€ JavaScript ํ•จ์ˆ˜๋กœ ์ •์˜๋˜์ง€๋งŒ ํ˜ธ์ถœ ์œ„์น˜์— ์ œ์•ฝ์ด ์žˆ๋Š”
1212

1313
## Hook์„ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ๋งŒ ํ˜ธ์ถœํ•˜์„ธ์š” {/*only-call-hooks-at-the-top-level*/}
1414

15-
React์—์„œ๋Š” `use`๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ [*Hook*](/reference/react) ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
15+
React์—์„œ๋Š” `use`๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ [*Hook*](/reference/react)์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
1616

1717
**Hook์„ ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ์ค‘์ฒฉ ํ•จ์ˆ˜, ๋˜๋Š” `try`/`catch`/`finally` ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœํ•˜์ง€ ๋งˆ์„ธ์š”.** ๋Œ€์‹  Hook์„ ํ•ญ์ƒ React ํ•จ์ˆ˜์˜ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ํ˜ธ์ถœํ•˜๊ณ , early return ์ด์ „์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Hook์€ React๊ฐ€ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋™์•ˆ์—๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1818

@@ -21,13 +21,13 @@ React์—์„œ๋Š” `use`๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ [*Hook*](/reference/react) ์ด๋ผ
2121

2222
```js{2-3,8-9}
2323
function Counter() {
24-
// โœ… ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
24+
// โœ… Good: ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
2525
const [count, setCount] = useState(0);
2626
// ...
2727
}
2828
2929
function useWindowWidth() {
30-
// โœ… ์ปค์Šคํ…€ Hook์˜ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
30+
// โœ… Good: ์ปค์Šคํ…€ Hook์˜ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
3131
const [width, setWidth] = useState(window.innerWidth);
3232
// ...
3333
}
@@ -47,15 +47,15 @@ function useWindowWidth() {
4747
```js{3-4,11-12,20-21}
4848
function Bad({ cond }) {
4949
if (cond) {
50-
// ๐Ÿ”ด ์กฐ๊ฑด๋ถ€ ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
50+
// ๐Ÿ”ด Bad: ์กฐ๊ฑด๋ถ€ ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
5151
const theme = useContext(ThemeContext);
5252
}
5353
// ...
5454
}
5555
5656
function Bad() {
5757
for (let i = 0; i < 10; i++) {
58-
// ๐Ÿ”ด ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
58+
// ๐Ÿ”ด Bad: ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
5959
const theme = useContext(ThemeContext);
6060
}
6161
// ...
@@ -65,22 +65,22 @@ function Bad({ cond }) {
6565
if (cond) {
6666
return;
6767
}
68-
// ๐Ÿ”ด ์กฐ๊ฑด๋ถ€ return๋ฌธ ์ดํ›„ (์ˆ˜์ •ํ•˜๋ ค๋ฉด return๋ฌธ ์ด์ „์œผ๋กœ ์ด๋™ํ•˜์„ธ์š”!)
68+
// ๐Ÿ”ด Bad: ์กฐ๊ฑด๋ถ€ `return`๋ฌธ ์ดํ›„ (์ˆ˜์ •ํ•˜๋ ค๋ฉด `return`๋ฌธ ์ด์ „์œผ๋กœ ์ด๋™ํ•˜์„ธ์š”!)
6969
const theme = useContext(ThemeContext);
7070
// ...
7171
}
7272
7373
function Bad() {
7474
function handleClick() {
75-
// ๐Ÿ”ด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
75+
// ๐Ÿ”ด Bad: ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
7676
const theme = useContext(ThemeContext);
7777
}
7878
// ...
7979
}
8080
8181
function Bad() {
8282
const style = useMemo(() => {
83-
// ๐Ÿ”ด useMemo ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
83+
// ๐Ÿ”ด Bad: `useMemo` ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
8484
const theme = useContext(ThemeContext);
8585
return createStyle(theme);
8686
});
@@ -89,15 +89,15 @@ function Bad() {
8989
9090
class Bad extends React.Component {
9191
render() {
92-
// ๐Ÿ”ด ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ๋Œ€์‹  ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”!)
92+
// ๐Ÿ”ด Bad: ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ๋Œ€์‹  ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”!)
9393
useEffect(() => {})
9494
// ...
9595
}
9696
}
9797
9898
function Bad() {
9999
try {
100-
// ๐Ÿ”ด try/catch/finally ๋ธ”๋ก ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
100+
// ๐Ÿ”ด Bad: `try`/`catch`/`finally` ๋ธ”๋ก ๋‚ด๋ถ€ (์ˆ˜์ •ํ•˜๋ ค๋ฉด ์™ธ๋ถ€๋กœ ์ด๋™ํ•˜์„ธ์š”!)
101101
const [x, setX] = useState(0);
102102
} catch {
103103
const [x, setX] = useState(1);
@@ -109,15 +109,15 @@ function Bad() {
109109

110110
<Note>
111111

112-
[์ปค์Šคํ…€ Hook](/learn/reusing-logic-with-custom-hooks)์€ ๋‹ค๋ฅธ Hook์„ *ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค* (๊ทธ๊ฒƒ์ด ์ปค์Šคํ…€ Hook์˜ ์ฃผ๋œ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค). ์ปค์Šคํ…€ Hook๋„ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ๋™์•ˆ์—๋งŒ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
112+
[์ปค์Šคํ…€ Hook](/learn/reusing-logic-with-custom-hooks)์€ ๋‹ค๋ฅธ Hook์„ *ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค*. (์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ปค์Šคํ…€ Hook์˜ ์ฃผ๋œ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.) ์ปค์Šคํ…€ Hook๋„ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ๋™์•ˆ์—๋งŒ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
113113

114114
</Note>
115115

116116
---
117117

118118
## Hook์„ React ํ•จ์ˆ˜์—์„œ๋งŒ ํ˜ธ์ถœํ•˜์„ธ์š” {/*only-call-hooks-from-react-functions*/}
119119

120-
์ผ๋ฐ˜ JavaScript ํ•จ์ˆ˜์—์„œ Hook์„ ํ˜ธ์ถœํ•˜์ง€ ๋งˆ์„ธ์š”. ๋Œ€์‹  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
120+
์ผ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์—์„œ Hook์„ ํ˜ธ์ถœํ•˜์ง€ ๋งˆ์„ธ์š”. ๋Œ€์‹  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
121121

122122
โœ… Hook์„ React ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ˜ธ์ถœํ•˜์„ธ์š”.
123123
โœ… Hook์„ [์ปค์Šคํ…€ Hook](/learn/reusing-logic-with-custom-hooks#extracting-your-own-custom-hook-from-a-component)์—์„œ ํ˜ธ์ถœํ•˜์„ธ์š”.

0 commit comments

Comments
ย (0)