본문 바로가기
React

useState의 비동기적 동작

by 안자바먹지 2020. 12. 21.
728x90

문제점

updateSearchTerm 함수는 사용자가 키보드로 입력한 값을 받아와서 그 값으로 post 요청을 보내는 함수인데

 

서버쪽에 요청값 중 searchTerm이 자꾸 이전 값으로 들어오는 것이었다. 

 

 

... 생략

const [SearchTerm, setSearchTerm] = useState('')



useEffect(() => {
    const body = {
      skip: Skip,
      limit: Limit,
    }

    getProducts(body)
  }, [])



const updateSearchTerm = (newSearchTerm) => {
    const body = {
      skip: 0,
      limit: Limit,
      filters: Filters,
      searchTerm: SearchTerm,
    }

    setSkip(0)
    setSearchTerm(newSearchTerm)
    getProducts(body)
  }
  
 ... 생략

 

 

 

해결책

리액트는 state 값이 바뀔 때 리렌더링이 되면서 바뀐 state가 반영 되는데, useEffect Hook에서 변화를 감지하고자 하는 값을 두 번째 인자로 넣어 searchTerm이 바뀔 때 조회 하도록 하면 된다.

 

useEffect(() => {
    const body = {
      skip: Skip,
      limit: Limit,
      searchTerm: SearchTerm,
    }

    getProducts(body)
  }, [SearchTerm])
728x90

'React' 카테고리의 다른 글

Redux Toolkit  (0) 2021.06.04
Controlled Component vs UnControlled Component  (0) 2021.05.17
useEffect  (0) 2021.02.02
useState의 이전 상태값  (0) 2020.12.28
redux-promise  (0) 2020.12.18

댓글