강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

hyojin hyo님의 프로필 이미지
hyojin hyo

작성한 질문수

웹 게임을 만들며 배우는 React

6-4. useEffect로 업데이트 감지하기

스프레드 연산자 질문 있습니다

작성

·

164

0

for(let i=0i<winNumbers.length-1;i++){
            timeouts.current[i]=setTimeout(()=>{
                console.log(winBalls)
                setWinBalls([...winBalls,winNumbers[i]])
            },(i+1)*1000)
       }

useEffect 안에 코드를 이렇게 넣고 짰습니다.

여기서 winNumbers가 [ 8, 16, 29, 36, 39, 41 ]라고 하면

winBalls라는 배열 안에 이전 winBalls를 복사한 후 winNumbers의 숫자를 한개씩 넣는걸로 이해했어요.

setWinBalls로 winBalls를 바꿔주니까 굳이 prevBalls를 넣지 않아도 된다고 생각했거든요.

winBalls배열은 바깥에 선언되어있고 for문을 돌면서 이전 배열을 복사해서 넣는거니까 winBalls가

[ 8 ]

[ 8, 16 ]

[ 8, 16, 29 ]

[ 8, 16, 29, 36 ]

[ 8, 16, 29, 36, 39 ]

[ 8, 16, 29, 36, 39, 41 ]

이렇게 출력이 될거라고 예상했는데 계속 []만 출력되더라구요

이유를 잘 모르겠어서 질문드립니다!

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

그래서 prev => 를 쓰는겁니다. useEffect의 [] 안에 winBalls가 들어있나요?

hyojin hyo님의 프로필 이미지
hyojin hyo

작성한 질문수

질문하기