Skip to content

Commit b91983d

Browse files
committed
Modify description for useCallback hook
1 parent 577162a commit b91983d

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

corrections.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,55 @@ ReactDOM.render(
3636
>
3737
> 2.3.2에서 언급했었던 `React.StrictMode`가 적용되어 있으면 일부 라이브사이클이 두 번씩 호출됩니다. 개발 환경에서만 두 번씩 호출이 되며 프로덕션 환경에서는 정상적으로 호출되니 안심하세요. 만약에 책에서 나오는 스크린샷과 동일한 결과물을 보시고 싶다면, index.js를 열어서 `React.StrictMode`를 제거하고 `App` 컴포넌트만 렌더링 하시면 됩니다.
3838
39+
## 8.5 useCallback 설명 수정
40+
41+
`useCallback`에 대한 설명이 적절치 않아 수정합니다. 개정판을 작성할 당시 Hooks가 나온지 얼마 안됐을때 작성된거라, 좋지 못한 설명이 들어갔던 것 같습니다. 사실 함수는 매번 생성이 되는거고 이전에 만든 함수를 재사용 할 수 있는 것에 의미를 둬야 하는 Hooks인데, 책에서 설명을 할 때 함수를 "필요할 때만 생성"한다고 표현했었습니다. 추가적으로, `useMemo`와 비슷하지만 사실상 동일한 코드가 아니므로 해당 설명을 제거하였습니다.
42+
43+
무조건 습관적으로 `useCallback`을 매번 사용하는 것 보다, 실질적으로 최적화를 할 수 있는 상황에서만 사용하는 것이 좋습니다.
44+
45+
다음 링크를 읽어보시면 이해에 도움이 될 것입니다.
46+
47+
- https://kentcdodds.com/blog/usememo-and-usecallback
48+
- 번역: https://ideveloper2.dev/blog/2019-06-14--when-to-use-memo-and-use-callback/
49+
50+
이에 따라 책의 내용을 조금 더 수정해야 되는데 이건 그 다음 개정판에서 해야 될 것 같습니다.
51+
52+
1. pg.208 내용 수정
53+
54+
```diff
55+
- 이 Hook을 사용하면 이벤트 핸들러 함수를 필요할 때만 생성할 수 있습니다.
56+
+ 이 Hook을 사용하면 만들어놨던 함수를 재사용할 수 있습니다.
57+
```
58+
59+
1. pg.208 내용 수정
60+
61+
```diff
62+
- 이렇게 선언하면 컴포넌트가 리렌더링될 때 마다 이 함수들이 새로 생성됩니다.
63+
+ 이렇게 선언하면 컴포넌트가 리렌더링될 때 마다 새로 만들어진 함수를 사용하게 됩니다.
64+
```
65+
66+
2. pg. 209 내용 수정
67+
68+
```diff
69+
- onChange처럼 비어 있는 배열을 넣게 되면 컴포넌트가 렌더링될 때 단 한번만 함수가 생성되며
70+
- onChange처럼 비어 있는 배열을 넣게 되면 컴포넌트가 렌더링될 때 만들었던 함수를 계속해서 재사용하게 되며,
71+
```
72+
73+
```diff
74+
- ... number와 list를 넣게 되면 인풋 내용이 바뀌거나 새로운 항목이 추가될 때마다 함수가 생성됩니다.
75+
+ ... number와 list를 넣게 되면 인풋 내용이 바뀌거나 새로운 항목이 추가될 때 새로 만들어진 함수를 사용하게 됩니다.
76+
```
77+
78+
3. pg. 209 내용 제거
79+
80+
```diff
81+
- 참고로 두 코드는 완전히 똑같은 코드입니다. ...
82+
```
83+
84+
그 아래 코드 블럭도 제거
85+
86+
87+
3988
## 13.4 오탈자
4089

4190
설명에서는 `/profiles` 라고 적혀있지만 실제 코드에서는 `/profile` 를 사용하고 있습니다. 따라서, 기존의 설명들을 모두 수정합니다.

0 commit comments

Comments
 (0)