У меня есть следующий код, я пытаюсь сделать SSR с React, redux-saga и т. Д.
Вывод с консолей, отображается в следующем порядке:
data2: { todos: { status: 'NOT_REQUESTED', data: [] } } // initialState
data1: { todos:
{ status: 'SSR_SUCCESS',
data:
[ [Object],.....
]
}
} // fetched data
....then initialState gets returned from the function before the promise resolves
Iзнаю, что я должен упустить что-то простое .... Я хочу вернуться из этой функции с данными (и хранилищем), которые приходят после разрешения toPromise.
const fetchDataForRender = (req, res) => {
let data = initialState; // = { todos: { status: 'NOT_REQUESTED', data: [] } }
const sagaMiddleware = createSagaMiddleware({ sagaMonitor });
const store = createStore(
rootReducer,
initialState,
applyMiddleware(sagaMiddleware)
);
const url = req.url;
const sagas = sagaMiddleware.run(rootSaga);
ReactDOMServer.renderToString(<ServerAppToRender url={url} store={store} />);
sagas.toPromise().then(() => {
data = store.getState();
console.log('data1:', data); // logs the fetched data successfully
});
console.log('data2: ', data);
store.dispatch(END);
return { data, store }; // initial state gets returned as 'data' ?
};
Любая помощь в получении этой работы будет принята с благодарностью, спасибо