【发布时间】:2019-08-25 08:18:39
【问题描述】:
如果你有一个 Redux 应用程序,你想迁移到新的 React Context API + hooks (useReducer),你会如何替换 redux-saga 或 redux-thunk 来处理副作用?我们以 redux-saga 的 github 页面为例:
import { call, put, takeEvery, takeLatest } from 'redux-saga/effects'
import Api from '...'
function* fetchUser(action) {
try {
const user = yield call(Api.fetchUser, action.payload.userId);
yield put({type: "USER_FETCH_SUCCEEDED", user: user});
} catch (e) {
yield put({type: "USER_FETCH_FAILED", message: e.message});
}
}
function* mySaga() {
yield takeEvery("USER_FETCH_REQUESTED", fetchUser);
}
function* mySaga() {
yield takeLatest("USER_FETCH_REQUESTED", fetchUser);
}
export default mySaga;
在不使用 Redux 而是使用 React Context api + hooks 的情况下,推荐的最佳实践是什么?
【问题讨论】:
-
你可以在非redux应用程序中使用常规方法如fetch或axios来处理同步和异步请求。
-
没有最佳实践,useReducer 是准系统。 useEffect 中可能会出现副作用,除非你会想出一些类似于 Saga 的上层结构。
标签: reactjs react-context