Правильный способ использования эффекта call в вашем случае будет следующим:
function* getUserDetails() {
const userDetails = yield call(axios.get, 'http://localhost:3004/user');
yield put({ type: 'USER_DATA_RECEIVED', user: userDetails})
}
Первый аргумент для call - это функция, которую вы хотите вызвать, последующие аргументы - это аргументы, которые вы хотите передать вызываемой функции.
Улучшенная версия
Вызовы к внешним API-интерфейсам всегда могут идти не так, поэтому рекомендуется защититься от этого, обернув блок try / catch вокруг вызова Axios.
В блоке catch вы можете, например, отправить действие, сигнализирующее об ошибке, которое вы можете использовать, чтобы показать пользователю сообщение об ошибке.
function* getUserDetails() {
let userDetails;
try {
userDetails = yield call(axios.get, 'http://localhost:3004/user');
} catch (error) {
yield put({ type: 'USER_DATA_ERROR', error });
return;
}
yield put({ type: 'USER_DATA_RECEIVED', user: userDetails})
}