고민노트 1 | useState 관련

없는블로그·2021년 8월 1일
0

고민노트

목록 보기
1/1
post-thumbnail

어떤 문제가 발생했니?

  • useState로 만들어준 state를 setter 함수를 이용해 변경해 줬는데 바로 반영이 안되는 문제가 발생했다

이 때, setCount1 => 1.5 변경을 해주었는데 count 값은 1.5 로 변경이 되었고 amount: count 값을 주었는데 payload 에는 변화가 없음을 볼 수 있다.

한번 더 액션이 들어갔을 때 이번에는 뒤늦게 amount: 1 => 1.5 가 반영되었고 count 는 2로 바뀐 것은 반영이 안된 것을 볼 수 있다.


어떻게 대응했니?

  • 첫번째 해결 : 변경된 count 가 반영되지 않는 것이 문제이기 때문에 그냥 직접 amount 값을 변경해주는 방법을 이용했다. 말로는 설명이 어려우니 자료화면을 보자.

이렇게.. 하지만 너무 비효율적인 방법인 것 같음. setCount 를 해줬음에도 amount 에도 +0.5 를 해줘야 한다는게 비효율적이면서도 기분이 나빠서 다음 방법으로 해결 했다.


  • 두번째 해결 : state 값을 변경해 reducer 로 보내주지 않고 foodId 값만 보내주어 reducer 에서 직접 amount 값을 변경해주는 방법을 이용 했다.

이렇게 했을 때 문제없이 작동하였음


결론

사실 문제는 해결했지만 근본적으로 왜 변화된 state 값이 반영되지 않는지... 알아내지 못했다. 하지만 확실한 것은 변경이 되지만 data 라는 변수에 담을 때는 변경이 되지 않은 상태의 값이 담긴다는 점..

순서에 문제가 있는 것이 확실하다. 그렇다면 왜 그렇게 되는 것인지.. 분명히 setCount 이후에 data 를 선언하는데 동기적인 처리가 되지 않나? 그렇다면 왜? 라는 의문이 해결되지 않는다......................

미제사건으로 남기고 넘어갑니다...

profile
없는블로그

0개의 댓글