• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

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

21.07.31 16:58 작성 조회수 98

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가 들어있나요?