dispatch할 때 unwrap()은??

완두콩·2023년 6월 27일
0

redux/toolkit

목록 보기
8/8

unwrap()

unwrap()은 Redux Toolkit의 createAsyncThunk 함수와 함께 사용되는 메서드.

비동기 액션의 Promise 결과를 처리하기 위해 사용.

unwrap()은 createAsyncThunk를 통해 생성된 비동기 액션 크리에이터에서만 사용가능하다.

AddPost.js에서 addNewPost는 비동기 액션 크리에이터임.

비동기 액션크리에이터를 dispatch하는 경우, 비동기 작업의 결과인 promise를 반환하는데 성공적으로 완료되면 결과 값을 가지고 resolve되고, 실패하면 오류를 가지고 reject됨.

//AddPost.js

const onSubmitHandle = (e) => {
        e.preventDefault();
        if (canSave) {
            try {
                setAddReqStatus('pending');
                dispatch(addNewPost({ title, body: content, userId })).unwrap()

                setTitle('');
                setContent('');
                setUserId('');
                navigate('/')
            } catch (err) {
                console.error('게시물을 등록하는데 실패했습니다.', err);
            } finally {
                setAddReqStatus('idle');

            }
        }
    }

dispatch(addNewPost({ title, body: content, userId })).unwrap(); 에서 게시물을 추가하는 비동기 작업을 수행하는데 unwrap(); 함수를 사용해서 작업의 결과를 처리.

작업이 성공적으로 완료되면, catch 블록을 건너뛰고 finally 블록으로 이동.

작업이 실패한 경우, catch 블록이 실행.

profile
공부하자. 기록하자. 쫌!

0개의 댓글