useState 초기값 질문
1000
작성한 질문수 12
선생님 useState 초기값 설정할때
이렇게 함수로 넘기면 re-rendering 할 때마다 실행되지 않고
처음 한 번만 실행이 되는 건가요?
이게 그냥 문법이 그런거면 이해하고 넘어가겠는데~
다른 이유가 있는거면
왜 그렇게 되는지 이해가 잘 되지 않아서요 😂
함수로 넘기면 그렇게 되도록 리액트 내부적으로 처리가 되는건지...
( useEffect가 적용이 되는건지)
답변 1
4
좋은 의문이에요~
알고 계신 것처럼 리액트는 매 렌더링마다 모든 코드를 실행합니다.
const [like, setLike] = useState(비싼초기계산값)
여기서 '비싼초기계산값' 코드가 매 렌더마다 실행되고, 첫 렌더링 이후의 실행값들은 무시됩니다 (이미 업데이트된 state값을 들고 있으니까요).
하지만 아래처럼 함수를 넘기면
const [like, setLike] = useState(() => get비싼초기계산값());
함수인 () => get비싼초기계산값() 은 매 렌더링마다 불리지만 실제 비싼계산은 "get비싼초기계산값"이 실행(call된다고 하죠)되는 첫 렌더링때만 수행합니다.
정리해보면
1. 값으로 바로 초기화하든, 함수로 지연초기화하든 리액트는 매 렌더링마다 모든 코드를 실행
2. 다만 (리액트 문법에 따라) 함수로 지연초기화하면 실제 내부함수 실행은 초기렌더링에만 실행
입니다.
API 적용 안되는 코드 수정 방법입니다.
0
85
1
고양이 이미지가 엑박이 뜨네요
0
65
1
npx 명령어 사용 불가
1
86
1
const 변수와 컴포넌트의 차이
0
94
1
강의노트
0
146
1
vite로 리액트 빌드한 후 깃허브에 배포하는 방법
0
340
1
빌드할때 dist 폴더가 만들어지는데요,
0
798
1
js파일 업로드 요청
0
139
1
변경된 api 사용시 text 안나오는 문제
0
151
1
메인글자수정...
1
283
3
디렉터리 구조 관련하여 참고할 만한 예시가 있을까요?
1
315
1
https://cataas.com/undefined 로 나오는데 왜그런건가요?
1
609
4
고양이 사진이 깨져요.ㅜㅜ
2
363
3
강의 노트 위치를 모르겠습니다
1
347
1
깃 강의노트 어디서 볼 수 있나요?
1
382
2
이해가 안되는 부분이 있어요
1
366
1
api가 안불러와지네요...
1
671
4
진유림 선생님 너무 궁금해서 질문드립니다 ㅜ
1
338
2
react에서 컴포넌트 만들 때 대문자를 쓰는 이유
2
1162
2
https://cataas.com/ 여기 도메인이 죽어서 이미지가 보이지 않습니다 ㅠ
1
336
2
index.js 내용이 바꼈네용
1
321
2
프로젝트에 사용할 상태와 로직 관리 라이브러리 훅 사용 질문입니다.
1
263
2
html 코드 오류
1
465
2
고양이 이미지 깨져요
1
343
2





