ENN
useSelector useEffect에서 사용하기 본문
useSelector는 useEffect내에서 사용할 수 없다.
다음과 같은 오류가 발생할 것이다.
"useSelector" cannot be called inside a callback.
그러나 useSelector로 택한 값으로 초기 설정을 하고 싶은 경우가 발생한다.
이럴 때는 어떻게 해야 할까?
const selectorData = useSelector(...);
const [data, setData] = useState(selectorData);
useEffect(() => {
setData(selectorData)
}, [selectorData])
위와 같이 useState를 사용하면 간단히 해결된다.
하지만 이렇게 해도 해결되지 않는 경우가 생긴다.
'selectorData'가 'data'의 값으로 들어오는데 딜레이 시간이 발생하면, setData(selectorData)를 하더라도 'data'에 그냥 undefine 값이 들어갈 수 있다.
이럴 때는 아래와 같이 해결할 수 있다.
const selectorData = useSelector(...);
const [data, setData] = useState(selectorData);
useEffect(() => {
setData(selectorData)
}, [selectorData, data])
이렇게 수정하면 초기 실행시 반드시 'data'에 'selectorData'값을 넣을 수 있다.
'프론트엔드' 카테고리의 다른 글
SPA(Single Page Application)vs MPA(Multi Page Application) (0) | 2023.01.06 |
---|---|
[React] States Props (0) | 2022.09.19 |
Redux와 SWR 비교 (0) | 2022.09.14 |
Typescript 유틸리티 타입 (0) | 2022.09.14 |
ajax, fetch, axios 비교 (0) | 2022.09.14 |