Привет, приятель. Я начал с Firebase в январе этого года, выполнил целый проект, и я знаю борьбу за поиск информации.
Ответ на ваш вопрос: вам нужно использовать саги.
https://github.com/redux-saga/redux-saga
Sagas - это способ синхронизировать ваши вызовы API, поэтому они вызываются до того, как ваш редуктор отправляет действие и позволяет контролировать синхронные вызовы API.
Например,
function* addAnswer{
const user = yield call(Api.addAnswer, action.payload.userId);
yield put({type: "REQUEST_USER_ANSWER_SUCCEEDED", user: user});
}
Sagas будет ждать завершения вызова до того, как он продолжится. Затем вы связываете эту функцию с действием.
function* mySaga() {
yield takeEvery("REQUEST_USER_ANSWER", fetchUser);
}
И вы добавляете в свой магазин промежуточное программное обеспечение redux-saga
const sagaMiddleware = createSagaMiddleware()
// mount it on the Store
const store = createStore(
reducer,
applyMiddleware(sagaMiddleware)
)
По сути, здесь происходит то, что каждый раз, когда вы отвечаете, вы хотите быть привязанными к саге REQUEST_USER_ANSWER, которая затем в случае успеха запускает REQUEST_USER_ANSWER_SUCCEEDED, к которому вы также хотите привязать ваш редуктор. Таким образом, вы знаете, что редуктор срабатывает только в том случае, если вызов API выполнен и успешно выполнен.
Люди используют Saga или Thunk в своих проектах, которые выполняют ту же работу, но вам абсолютно необходим один из них.