안녕하세요 현재 사이트 이벤트 처리를 하고 있습니다.
사용자가 어떠 어떠한 제품을 클릭하면 getvalue 함수가 실행되게 됩니다.
이후, 사용자의 금액이 변경 된 후에 -> 거기에 대한 총 합을 계산을 해야 되는 상황이라 예를 들자면
사용자의 금액(장바구니 속의 아이템 같은) 300, 400, 500 원(현재
사용자가 클릭해 값 변경시 -> 새로운 값으로 갱신(첫번째 300을 사용자가 600으로 변경한 경우)
변경한 상태를 state에 저장하고 -> 그 후에 총 합을 계산
즉 사용자의 장바구니 스테이트 값을 갱신 이완료 된 후에-> 총 합을 계산해 갱신 해야 되는 상황입니다.
이 경우에 사용자의 장바구니 state한개랑 총 합을 저장하는 state총 두개를 사용하였는데
리액트가 비동기 방식이라, 장바구니 값을 갱신하기 전에, 총합을 게산하는 상황이 자꾸 나오게 됩니다.
async wait을 사용하면 될것 같은데 state변경 함수에는 또 콜백함수 사용이 안된다고 해서, 뭔가 알긴 하겠는데, 코드로 구현이 너무 어려워서 질문 드리게 되었습니다. 비동기 언어는 잘 사용하지 않다보니 너무 어렵네요..
코드는 이렇습니다.
const getvalue = (event, value,reason, count)=>{
let test = 0
let temp = [...user_info[0]] // user info 0 는 제품의 이름을 담은 리스트 1은 제품의 가격을 담은 리스트
temp[count] = value.name
let temp2 = [...user_info[1]]
temp2[count] = value.listPrice // 여기까지 장바구니 에 들어있는 사용자의 제품이름, 가격 변경
change_user_info([temp,temp2]) // 변경한 장바구니 값 state변경
user_price.map(()=>{ // 사용자의 총합 계산
test = test+ value.listPrice
})
change_total_price(test) // 사용자의 총합 변경
}