Api.fetchUser
처럼에게 데이터를 전달하는 올바른 방법을 알아 내려고 시도하고 API를 아약스 호출을 수행해야하는 기능, 그리고 그것은 약속을 반환해야합니다.
귀하의 경우이 약속은 사용자 데이터 변수를 해결해야합니다. 예를 들어
:
function* fetchUserSaga(action) {
// `call` function accepts rest arguments, which will be passed to `api.fetchUser` function.
// Instructing middleware to call promise, it resolved value will be assigned to `userData` variable
const userData = yield call(api.fetchUser, action.userId);
// Instructing middleware to dispatch corresponding action.
yield put({
type: 'FETCH_USER_SUCCESS',
userData
});
}
call
, put
효과가 제작자의 함수이다 :
// services/api.js
export function fetchUser(userId) {
// `axios` function returns promise, you can use any ajax lib, which can
// return promise, or wrap in promise ajax call
return axios.get('/api/user/' + userId);
};
나서 무용담이다. 그들은 GET
또는 POST
요청에 익숙하지 않습니다.
call
함수는 미들웨어가 약속을 호출하도록 지시하는 효과 설명을 만드는 데 사용됩니다. put
함수는 효과를 생성합니다.이 효과는 미들웨어가 작업을 저장소로 보내도록 지시합니다.
이것은 정말 좋은 설명입니다. 감사합니다! – Ilja
는 시도 { const를 userData에 = ..... 수율 ... } 캐치 (전자) { 수율 넣어 ({ 유형을 'FETCH_USER_FAILED' }) errorhandeling 기억; } –