Tru*_*ufa 5 javascript reactjs redux redux-saga
假设我有一个看起来像这样的传奇:
export function* incrementAsync(action) {
try {
const res = yield call(Api.signin.create, action.payload);
yield put({
type: USER_SIGN_IN_FETCH_SUCCESS,
payload: res.data.auth
};
} catch (e) {
yield put({ type: USER_SIGN_IN_FETCH_ERROR_NETWORK });
}
}
Run Code Online (Sandbox Code Playgroud)
这次尝试取得了成功,但这并不意味着用户实际上已经登录:
res.data.auth.error 可能是真的
我的问题是我是否应该做以下事情:
if (//user was succesfully logged in)
yield put(//user was successfully logged in)
else if //wrong username
yield put(//wrong username)
else if //wrong password
yield put(//wrong password)
Run Code Online (Sandbox Code Playgroud)
还是我应该只有一个代表成功,一个代表错误,并在化简器中分析逻辑并相对于响应数据建立存储?
Mar*_*kus -1
我总是将尽可能多的逻辑移至减速器。逻辑在开发工具中更明显,如果你在传奇中做到这一点可能会更困难。它也更容易测试,因为它是一个同步的纯函数。另外,USER_SIGN_IN_FETCH_SUCCESS对于从 saga 发送到减速器的操作对我来说似乎完全有意义(从组件到减速器的操作应该技术性较低)。
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |