inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

만들면서 배우는 리액트 : 기초

33 setState 더 알아보기- 함수, 지연초기화

useState 안에 함수를 넘기면 왜 반복실행을 방지할 수 있나요?

1396

susan

작성한 질문수 2

1

해당 영상 강의 초반에

const [counter, setCounter] = React.useState(jsonLocalStorage.getItem('counter'))

위 코드를 수정하시면서 카운터의 useState( ) 초기값에 함수 형식으로 쓰면,  App 이 렌더링 될 때마다 local storage 에 접근하는 걸 방지할 수 있다고 설명하신 걸로 이해했습니다.

왜 함수 형식 () => { return ... }  으로 useState 초기값에 코드를 쓰면 리액트가 반복실행을 안하는(?) 건지 궁금합니다!

감사합니다 :)

 

javascript react

답변 2

0

진유림

오 현이님 감사합니다 ㅎㅎ 딱 정확한 문서예요~

 

더 궁금하다면 Kent의 이 글을 참고해보시는것도 추천드려요.

https://kentcdodds.com/blog/use-state-lazy-initialization-and-function-updates

 

요약해보면

- 함수를 통해 state를 지연초기화하면 매 렌더링마다 함수를 생성하긴 한다 (js엔진이 매우 빠르기 때문에 매번 함수 생성하는건 노이슈)

- 다만 함수를 실행시키는건 값이 필요한 순간(즉 초기렌더링 순간)뿐이기 때문에 고비용 연산은 초기 한번만 실행된다

 

입니다

0

스타현이

해당질문은 https://ko.reactjs.org/docs/hooks-reference.html#lazy-initial-state 여기서 설명하고있습니다. (리액트 공식문서)

참고 해보시면 좋을것 같아요 :)

API 적용 안되는 코드 수정 방법입니다.

0

71

1

고양이 이미지가 엑박이 뜨네요

0

51

1

npx 명령어 사용 불가

1

75

1

const 변수와 컴포넌트의 차이

0

89

1

강의노트

0

139

1

vite로 리액트 빌드한 후 깃허브에 배포하는 방법

0

325

1

빌드할때 dist 폴더가 만들어지는데요,

0

768

1

js파일 업로드 요청

0

135

1

변경된 api 사용시 text 안나오는 문제

0

142

1

메인글자수정...

1

269

3

디렉터리 구조 관련하여 참고할 만한 예시가 있을까요?

1

310

1

https://cataas.com/undefined 로 나오는데 왜그런건가요?

1

592

4

고양이 사진이 깨져요.ㅜㅜ

2

359

3

강의 노트 위치를 모르겠습니다

1

343

1

깃 강의노트 어디서 볼 수 있나요?

1

381

2

이해가 안되는 부분이 있어요

1

360

1

api가 안불러와지네요...

1

658

4

진유림 선생님 너무 궁금해서 질문드립니다 ㅜ

1

331

2

react에서 컴포넌트 만들 때 대문자를 쓰는 이유

2

1154

2

https://cataas.com/ 여기 도메인이 죽어서 이미지가 보이지 않습니다 ㅠ

1

331

2

index.js 내용이 바꼈네용

1

319

2

프로젝트에 사용할 상태와 로직 관리 라이브러리 훅 사용 질문입니다.

1

261

2

html 코드 오류

1

463

2

고양이 이미지 깨져요

1

338

2