Реагировать Redux SSR сага запустить сагу обещание - PullRequest
0 голосов
/ 24 июня 2019

У меня есть следующий код, я пытаюсь сделать 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' ?   
};

Любая помощь в получении этой работы будет принята с благодарностью, спасибо

...