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

koko2님의 프로필 이미지

작성한 질문수

실전 리액트 프로그래밍

리액트를 사용한 코드의 특징

setState 비동기 처리관련질문입니다.

20.10.30 17:17 작성

·

374

3

제가 setState가 비동기처리이면서 배치이다 라는것을 보면서 궁금한 점이생겼는데요.. onAdd함수를 보면 currentId를 1증가시키고, todo변수에 값을 할당한뒤 setTodoList에 값을 넣어서 렌더링하는 순서인데요. 만약에 동기처리처럼 onAdd버튼을 클릭시 currentId에 1을 증가한후, 그값을 todo에 넣은뒤 그 값을 setTodoList에 반영 하고 싶다고면 어떻게 해야할까요?

답변 3

2

이재승님의 프로필 이미지
이재승
지식공유자

2020. 10. 30. 19:01

안녕하세요
간단하게는 아래와 같이 할 수 있습니다

const newId = currentId + 1;
setCurrentId(newId);
const todo = { id: newId, desc };

만약 상태값 변경 함수로만 하고싶다면 currentId와 todoList를 하나의 useReducer 로 관리하는 방법도 있습니다.

0

koko2님의 프로필 이미지
koko2
질문자

2020. 10. 30. 17:20

다시 간단히 말하면 onadd버튼 클릭시 todo값에 currentId+1된값이 적용되게 하고싶다는 말이었습니다. 

0

koko2님의 프로필 이미지
koko2
질문자

2020. 10. 30. 17:18

강의내용으로보면 id값은 useState의 initial value값이 적용된게 렌더되고 그 이후 +1이 됩니다. 그리고 다음번에 그 값이 적용되는 순서인데 저는 onAdd클릭시 바로 변경된값을 적용시키려면 혹시 어떻게 해야하는지 궁금해서 여쭈어봅니다.

koko2님의 프로필 이미지

작성한 질문수

질문하기