전주호
WebSurf
전주호
전체 방문자
오늘
어제
  • 분류 전체보기 (63)
    • CS (1)
    • 프로그래밍 언어 (3)
      • JAVA (1)
      • Python (2)
    • WEB (35)
      • Spring (21)
      • FastAPI (1)
      • React (4)
    • Git (1)
    • Database (2)
    • Cloud (4)
    • Docker (0)
    • Linux (0)
    • AI (8)
      • ComputerVision (3)
      • CUDA (1)
      • Anaconda (1)
      • NLP (1)
    • ETC (9)
    • Project (0)
      • GolaBlur (0)
    • 알고리즘 문제 풀이 (0)
      • 프로그래머스 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • websocket
  • 클라우드
  • Spring Security
  • PYTHON
  • 단위테스트
  • AI
  • Internet
  • junit
  • 스프링
  • S3
  • 백엔드로드맵
  • jwt
  • conda
  • web
  • db
  • 테스트
  • 문제해결
  • 백엔드
  • oauth2
  • spring
  • AWS
  • jpa
  • react
  • EC2
  • 트러블슈팅
  • cloud
  • MobileFaceSwap
  • springboot
  • API
  • http

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
전주호

WebSurf

WEB/React

[React - Trouble Shooting] state 값이 변경되지 않는 문제

2023. 6. 1. 19:08
반응형

이번 포스트에서는 state와 setState는 간단하게만 보고 넘어가자.

 

배경 지식

state

state 값은 setState()를 통해서만 변경이 가능하다.

setState

useState로 만든 useState는 비동기적 특성을 갖는다!!

 

 

문제점

useEffect 훅 안에서 이벤트 리스너가 실행되면서

state 값이 변했다.

 

이 state 값이 의존성배열에 들어가있는

다른 useEffect 훅을 실행시켜 state 값을 확인해보면

값이 잘 나온다.

 

하지만 이벤트 리스너의 처리가 모두 끝나지 않았고,

변한 state 값을 통해 다른 로직이 실행되도록 구현되어 있었다.

 

여기서 문제가 발생한다!!

 

원인

앞서 말했듯이 React의 setState는 비동기적으로 실행된다.

 

정확히는 현재 setState는 이벤트 핸들러 내에서 비동기적이다.

 

 

state가 변할 때마다 React는 렌더링을 한다고 생각을 하지만 그렇지 않다.

 

React는 브라우저 이벤트가 끝날 때 state를 일괄적으로 업데이트한다.

 

state가 무분별하게 변하면서 생기는

부담스러운 렌더링이 일어나지 않는다.

 

 

이 방식을 알지 못하고 state 값을 useEffect 훅 내부에서 변경하고

그대로 사용하려 해서 state가 변경되지 않는 오류가 발생했다.

 

 

해결

같은 이벤트 내부에서 로직이 수행되지 않도록

브라우저 이벤트를 분리했다.

 

그렇게 하니 변경된 state값이 적용되어 오류가 발생하지 않는다.

 

 

 

Reference

https://ko.legacy.reactjs.org/docs/faq-state.html#why-is-setstate-giving-me-the-wrong-value

 

컴포넌트 State – React

A JavaScript library for building user interfaces

ko.legacy.reactjs.org

반응형

'WEB > React' 카테고리의 다른 글

[React - Trouble Shooting] 불필요한 렌더링으로 인한 문제  (0) 2023.05.30
[React] map 함수  (0) 2023.03.28
[React] spread 연산자  (0) 2023.01.09
    'WEB/React' 카테고리의 다른 글
    • [React - Trouble Shooting] 불필요한 렌더링으로 인한 문제
    • [React] map 함수
    • [React] spread 연산자
    전주호
    전주호

    티스토리툴바