반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 프론트 개발자
- 개발자
- React
- 리액트네이티브
- cloudfront
- ReactNative
- chrome extension typescript boiler plate
- 구글 이미지 다운
- 토이프로젝트
- 로또 몰카
- three.js
- extension
- 프론트엔드
- 똥피하기
- 리액트
- 사이드 프로젝트
- react mociking
- react-mocking
- 디지몬상테스트
- 로또 몰래카메라
- 2024년 개발자회고
- Google Image Crawler
- 프로젝트
- react-three-fiber
- 네이버 로또
- Chrome Extension
- 2024년회고
- Google Image Crawler Chrome Extension
- 나락퀴즈
- 어플
Archives
- Today
- Total
개발 블로그
리액트 setTimeout 안 함수에서의 state 값 본문
리액트 네이티브로 두번째 어플을 개발중인데
setTimeout 을 사용하여서 기능 개발중인 것이 있다. 근데 개발을 하던 중 모르던 사실을 발견하여 기록한다.
리액트에서 setTimeout 내에서의 state는 setTimeout을 정의할때의 state값을 계속해서 사용한다.
예를들어,
const [count, setCount] = useState(0);
useEffect(() => {
setInterval(() => {
console.log(count);
setCount((prev) => prev + 1);
}, 1000);
}, []);
이렇게 하면
0
1
2
3
4
...
이렇게 찍힐 것 같지만 실제로는
0
0
0
0
0
...
이렇게 찍힌다. 그렇다고 count 값이 계속해서 0은 아니다. setCount 함수는 정상동작하여 count는 실제로 위와 같은 값을 갖는다.
위와 같이 동작하게 하고 싶으면 useRef 훅을 사용하면 해결이 된다.
const [count, setCount] = useState(0);
const countRef = useRef(0);
useEffect(() => {
setInterval(() => {
console.log(count.current);
setCount((prev) => prev + 1);
}, 1000);
}, []);
useEffect(()=>{
countRef.current = count;
},[count])
나 같은 경우는 이런식으로 사용하여 해결하였다.
반응형
'React' 카테고리의 다른 글
React 더미 데이터 사용하기, 가장 간단한 Mock Data 사용방법. (라이브러리 없이 ) (0) | 2024.03.17 |
---|---|
React - Context API 설명과 예시 코드, 그림 설명 (0) | 2024.01.15 |
React 프로젝트 SEO 최적화 (네이버) 도전기 - lambda@edge 로 성공 (1) | 2024.01.07 |
custom hook 따라 만들기 (0) | 2022.10.24 |
Comments