【发布时间】:2016-10-06 20:26:15
【问题描述】:
在我的 React-Native 应用程序中,我编写了一个用户登录组件,它将用户名和哈希发送到服务器,将哈希与数据库中的哈希进行比较并返回结果。我实现了using redux-saga:
function* fetchUser(action) {
try {
const user = yield call(Api.fetchUser, action);
yield put({type: types.USER_FETCH_SUCCEEDED, user});
} catch (e) {
yield put({type: types.USER_FETCH_FAILED, message: e.message});
}
}
export function* watchFetchUser() {
yield* takeEvery(types.USER_FETCH_REQUESTED, fetchUser);
}
export default function* rootSaga() {
yield fork(watchFetchUser);
// ...
}
我希望const user 将包含来自 API 的响应,之后将运行 yield put({type: types.USER_FETCH_SUCCEEDED, user})。但是在yield call(Api.fetchUser, action) 之后user 是undefined。但是Api.fetchUser 会返回正确的响应。
我找不到我的错误在哪里。为什么Api.fetchUser返回正确响应后const user = yield call(Api.fetchUser, action)的结果是undefined?
fetchUser(action) {
const url = `${apiUrls.LOGIN_URL}`;
fetch(url, 'POST', action.user)
.then(response => response.json())
.then(res => res)
}
【问题讨论】:
标签: reactjs react-native redux redux-saga