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
블록이 실행.