In einer universellen App, die Authentifizierung behandeln, müssen wir jeden Benutzer mit seinen eigenen Cookies berücksichtigen. Also müssen wir sein anfängliches Anfrageobjekt speichern, um seine zukünftigen API-Aufrufe mit seinen Cookies dekorieren zu können. Ich sehe nicht, wie man es mit Redux-Saga behandelt, ich denke, die Arbeit sollte in einer benutzerdefinierten Middleware durchgeführt werden, um ein Objekt zu injizieren, das das Benutzeranforderungsobjekt in jede Saga einwickelt, zumindest denke ich, dass es den Job machen würde. aber ich sehe nicht, wie ich es vollständig erreichen kann.Wrap Benutzer Req in einer benutzerdefinierten API in Redux-Saga für Serverseite
ich über so etwas dachte:
export function* loadUser(action, api) { // Inject the object that wrap the initial user request object here
try {
const user = yield call(api.loadUser, action.payload); // So the request would be decorated behind this call
yield put(actions.loadUserSuccess(user));
} catch(e) {
yield put(actions.loadUserFail(e));
}
}
export default function* rootUserSagas() {
yield* takeLatest(LOAD_USER_REQUEST, loadUser);
}
Ich denke, es etwas, wenn das Geschäft
export function configureStore(initialState = {}, req) {
const api = new Api(req);
// Then what to do with the api object to get it back into sagas?
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
rootReducer,
initialState,
applyMiddleware(sagaMiddleware)
);
sagaMiddleware.run(rootSaga);
return store;
};
Diese Antwort in der Dokumentation: https://redux-saga.js.org/docs/api/index.html#middlewarerunsaga-args –