정리
1. 훅은 컴포넌트의 최상위 레벨에서만 호출될 수 있으며, 조건문, 반복문, 중첩된 함수 내부에서는 호출할 수 없습니다.
2. useEffect의 의존성 배열값은 상태함수보단, 변수로 하는게 일반적입니다.
그렇다 버튼을 누르면 아니다 출력.
아니다 버튼을 누르면 그렇다 출력.
의도와는 다르게 반대로 출력된다.
현재 코드에서 handleOptionChange 함수 내에서 setSelectedOption(e.target.value)을 호출한 직후에 console.log(selectedOption)를 사용하면 예상과 다른 결과가 출력될 수 있습니다.
이는 setSelectedOption 함수가 상태를 비동기적으로 업데이트하기 때문입니다. 즉, 상태가 설정된 직후에 바로 console.log를 호출해도, 상태 업데이트가 완료되기 전이기 때문에 이전 상태값을 출력하게 됩니다.
이 문제를 해결하기 위해서는 selectedOption 상태의 변경을 console.log로 직접 확인하려고 시도하는 대신, 상태 변경이 반영된 이후의 결과를 확인할 다른 방법을 사용해야 합니다. 예를 들어, 상태가 업데이트된 후의 값을 보고 싶다면, React의 useEffect 훅을 사용하여 selectedOption 상태의 변화를 감지하고 그에 따른 로그를 출력할 수 있습니다.
현재 코드
1. 훅은 컴포넌트의 최상위 레벨에서만 호출 (콘솔 의도대로 찍기)
useEffect를 통해서
console을 찍어보면 된다. 하지만 hook은 최상위 레벨에서만 호출 가능.
React 훅은 컴포넌트의 최상위 레벨에서만 호출될 수 있으며, 조건문, 반복문, 중첩된 함수 내부에서는 호출할 수 없습니다. 즉, handleOptionChange 함수 내부에서 useEffect를 호출하는 것은 React의 훅 사용 규칙을 위반하는 것입니다.
출력이 잘되는 모습
2. useEffect의 의존성 배열값은 상태함수보단, 변수로 하는게 일반적
콘솔을 다른 변수로 살펴보니 비동기 반영이 늦어서 *가 붙어있는 새로운 선택값이 배열에 반영 안된 모습을.
아랫 줄에는 useEffect를 통해서 배열에 반영된 상태를 확인할 수 있다.
아래처럼 useEffect의 의존성 배열값은 상태함수보단, 변수로 하는게 일반적.
mbti 유형 분석결과
'🪁react > react 실습' 카테고리의 다른 글
제로초 slack 강의(새롭게 배운 내용 정리) (0) | 2024.07.01 |
---|---|
to-do-list react 앱[자신감up 실습19] (0) | 2024.02.06 |
리액트 이미지 판별앱| 로딩과정 관리[자신감up 실습17] (0) | 2024.02.04 |
리액트 QR코드 생성[자신감up 실습16] (0) | 2024.02.02 |
lotto앱과 setTimeout | celarTimeout | Array.from[자신감up 실습15] (0) | 2024.02.02 |