inflearn logo
강의

講義

知識共有

Webゲームを作って学ぶReact

2-2. ClassとHooksを比較する

렌더링 될 때마다 함수 새로 그려지는데 한 번 선언하고 계속 쓰면 안되는건가요:?

234

yahoo23447340

投稿した質問数 41

0

 함수가 새로 그려지는게 useCallback 콜백 매개변수로 특정 값이 바뀔때마다 함수가 새로그려지는걸로 알 고 있습니다. 근데 예전부터 궁금했는데 한 번 그려놓은 함수를 계속 사용하면 되는거아닌가요? 왜 특정 값이 바뀔때마다 useCallback을 해서 새로 그려야 되는건가요? 그냥 [] 빈 배열 값 넣고 시작, 끝일때 실행되게 하면 문법상 에러인가요?

react

回答 2

2

zerocho

const [name, setName] = useState('zerocho');

const onClick = useCallback(() => {
  console.log(name);
}, []);

이렇게 빈 배열만 넣은 경우에는

setName('nero'); 로 name을 변경할 때

console.log(name)이 여전히 zerocho로 나오게 됩니다.

이것을 nero로 나오게 수정하려면

const onClick = useCallback(() => {
  console.log(name);
}, [name]);

을 넣어야 합니다.

0

yahoo23447340

함수를 새로 그리지 않으면 state값이 업데이트가 되지 않는거군요...  그럼 

const onClick = useCallback(() => {
  console.log(name);
}, []);

은 영원히  'zerocho' 값이군요...

전 onClick 이벤트를 하는 버튼이 함수를 호출하면 값이 바뀔거라고 생각하고 한 번만 선언하면 되지 않나 생각했는데.. 잘못생각했었네요..

npm run dev 실행 시 포트가 안뜨는 문제

0

241

2

timeouts.current를 useEffect 의 input값으로 넣었을때

0

98

2

렌더링 테스트 코드 (Hooks)

0

94

1

Cannot find package 'react-refesh' 이런 에러 뜨시는 분들 보세요.

0

167

1

해당 에러 뜨는 분들 보세요. "Uncaught TypeError: ReactDom.createRoot is not a function"

1

209

1

강사님 레포지토리에서 코드 복사 시 master 브랜치 말고 react18 브랜치꺼 복붙하세요ㅠㅠ

0

108

1

useMemo와 useCallback 사용 시기

0

223

2

onRightClickTd가 작동을 하지 않습니다.

0

237

1

action.type 불러오는 방식

0

227

2

onClickRedo 질문

0

177

1

const Try = require(./Try) 빨간줄

0

262

1

npx webpack 실행시

0

325

1

지뢰찾기 강좌에서 빈칸들 한번에 열기 파트에서 여쭤보고싶은부분이 있어서 글 올립니다.

0

243

1

강좌에서 다루지 않은 기능들은 어떻게 학습하면 좋을까요?

0

320

1

react devtool이 enable 않됩니다.

0

549

2

React 랜더링이 되지 않습니다.

0

423

2

비동기로 동작하는 setState에 대해서

0

340

1

npm run dev 할 때 에러발생

0

497

2

memo, PureComponenet, shouldComponentUpdate 관련 질문

0

211

1

devMiddleware의 필요성

0

360

1

리액트에서 화살표 함수를 사용해야하는 이유

0

948

2

path.join관련질문

0

288

2

2-9. 웹팩 데브 서버와 핫 리로딩 설치과정 시 에러

0

384

1

next.js 에서 이와 비슷한 예제를 돌리고있는데 react랑 달라서 질문 드립니

1

503

4