codestates / codestates/Pida

[Error Handling] useState의 set으로 값 변경 후 바로 적용해 넘겨주기

Open
#71 0 comments 1 reaction 1 assignee Claimed by @yuriiiiiiiiiii View on GitHub
에러핸들링
Dominant language
JavaScript
Stars
4
Forks
4
PR merge metrics
No merged PRs in 30d

Description

> ### 어떤 에러인가요?
> 검색 조건(select)을 useState로 저장해서 history.push()로 넘겨주려는데, useState는 비동기로 작동하기 때문에 한 박자씩 늦게 저장됨
> ### 에러 해결 전
> ```js
> const handleSelect = key => e => {
> setSelect({ ...select, [key]: e.target.name });
>
> if (key === 'size') setIsQ1(false);
> if (key === 'space') setIsQ2(false);
> if (key === 'species') {
> setIsQ3(false);
> history.push({
> pathname: '/search',
> state: select,
> });
> }
> };
> ```
> 스크린샷 2022-04-26 오후 10 32 40

> ### 에러 해결 후
> * 핸들링 방법에 대해서 간단하게 기록해보세요.
>
> ```js
> const [isNavigate, setIsNavigate] = useState('');
>
> const handleSelect = key => e => {
> setSelect({ ...select, [key]: e.target.name });
>
> if (key === 'size') setIsQ1(false);
> if (key === 'space') setIsQ2(false);
> if (key === 'species') {
> setIsQ3(false);
> setIsNavigate(true);
> }
> };
>
> useEffect(() => {
> if (isNavigate) {
> history.push({
> pathname: '/search',
> state: select,
> });
> setIsNavigate(false);
> }
> }, [isNavigate]);
> ```
> 스크린샷 2022-04-26 오후 10 37 34
>
> ### 에러 핸들링을 위해 참고한 레퍼런스 링크
> [링크](https://stackoverflow.com/questions/69395464/history-push-is-not-working-after-setstate-with-usestate)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.