我以前使用過REDX傳奇但我還是比較新的。無論如何,我似乎遇到了下面的代碼中的問題。Redux Saga在動作發出時沒有觸發API調用
在頂部,您將看到我正在使用的動作創建器來觸發此AJAX請求。 Redux正在正確調度此操作,並將LOAD_USER_REQUEST
類型記錄在我的控制檯中,但功能鏈在此處停止。在下面的代碼中,您會看到LOAD_USER_REQUEST
應該調用loadUserDetails
生成器,然後生成器應該調用userLogin
,並在我的動作創建器中接收有效內容。
讓我知道我是否可以提供任何可能有所幫助的附加信息。在此先感謝:)
// Action Creator for LOAD_USER_REQUEST.
export const getExistingUser = ({email = '[email protected]', password = '12345'} = {}) => ({
type: LOAD_USER_REQUEST,
payload: {email, password}
})
// API call being used in loadUserDetails Saga
export const userLogin = ({email = '[email protected]', password = '12345'} = {}) => {
return axios.post(`${API}auth/login`, {
email,
password
})
.then(res => {
console.log(res);
localStorage.setItem('token', res.data.token);
let user = res.data.user;
console.log(user);
return user;
})
.catch(err => new Error('userLogin err', err));
}
// Sagas
// loadUserDetails Saga - Should call fn above userLogin with payload from action creator
function* loadUserDetails(payload) {
const user = yield call(userLogin(payload));
yield put({type: LOAD_USER_SUCCESS, user}); // Yields effect to the reducer specifying the action type and user details
}
export function* watchRequest() {
yield* takeLatest(LOAD_USER_REQUEST, loadUserDetails);
}