I was searching about thunks on Redux-toolkit and I found 2 ways of dealing with them:
createAsyncThunk or just using async + dispatch
Using createAsyncThunk:
export const deleteColumnAndTasks = createAsyncThunk(
'yourSlice/deleteColumnAndTasks',
async ({ boardId, column }) => {
const tasksToDelete = column.taskIds || [];
await changeBoardColumns({
operationType: 'delete',
targetBoardId: boardId,
columnId: column.id
});
await deleteColumn({ columnId: column.id });
await Promise.all(tasksToDelete.map(taskId => deleteTask({ taskId })));
}
);
Using async + dispatch
export const deleteColumnAndTasks = ({ boardId, column }) => async dispatch => {
const tasksToDelete = column.taskIds || [];
try {
await dispatch(changeBoardColumns({
operationType: 'delete',
targetBoardId: boardId,
columnId: column.id
}));
await dispatch(deleteColumn({ columnId: column.id }));
await Promise.all(tasksToDelete.map(taskId => dispatch(deleteTask({ taskId }))));
} catch (error) {
console.log('Error deleting column and tasks', error);
}
};
What is the difference between the two ways?