Note/ReactJS

React - setTimeout function 에서 state 접근

Delia :D 2020. 8. 4. 11:39

Function 컴포넌트에서 useState 를 사용하고있고,

setTimeout  함수안에서 특정 state 값을 체크해야 하는 상황인데,

이상하게도 분명히 setTimeout 함수가 실행되기 전  state 를 변경해주었는데도 setTimeout 호출 함수는 setTimeout 세팅 시점의 값을 가져오고 있었다.

const [status, setStatus] = React.useState('ready');

function onClick() {
	setTimeout(() => {
		console.log('after timeout: ', status);
	}, 1000);
    
	setStatus('started');
}

console.log('rendering :', status);


return <button onClick={onClick}>Click</button>;

나의 경우에는 timeout 이후에 버튼 컴포넌트에 접근해서 클릭하는 방식으로 바꿔서 정확한 state 값을 접근하도록 했지만, 그렇지 않은 경우에는 어떻게 해야할까?

 

나와같은 이슈를 가진 사람이 이미 그 해답을 찾아놓았는데, 바로 state 값을 ref 로 지정해서 접근하는 방법이다.

자세한 사항은 아래 글의 가장 마지막 예시를 참고하면 된다.

 

setTimeout in React Components Using Hooks - Upmostly

Use setTimeout in your React components to execute a function or block of code after a period of time. Let's explore how to use setTimeout in React.

upmostly.com

 

'Note > ReactJS' 카테고리의 다른 글

MUI - React Materual UI  (0) 2022.11.23
React - snackbar - alert - banner - 알림배너? 메시지 배너? 넣기  (0) 2020.08.04
React.useEffect 와 Promise  (0) 2020.08.04
React Hooks 이용하기  (0) 2020.08.04