Javascript React服务器端渲染与redux saga
我已经将这部传奇作为Javascript React服务器端渲染与redux saga,javascript,reactjs,redux-saga,Javascript,Reactjs,Redux Saga,我已经将这部传奇作为 import { put, takeLatest } from 'redux-saga/effects'; import axios from 'axios'; import { FETCH_CARD_LIST_DATA_FROM_API, SET_CARD_LIST } from './CardList.actions'; import constants from '../../../../constants'; export default function
import { put, takeLatest } from 'redux-saga/effects';
import axios from 'axios';
import { FETCH_CARD_LIST_DATA_FROM_API, SET_CARD_LIST } from
'./CardList.actions';
import constants from '../../../../constants';
export default function * fetchCardListSaga(){
yield takeLatest(FETCH_CARD_LIST_DATA_FROM_API, fetchDataFromAPI)
}
function * fetchDataFromAPI(action){
const { payload } = action;
const response = yield
axios.get(`${constants.API_URL}/hotels/${payload[0]}/${payload[1]}`);
console.log('data recieved from api server', response.data.length);
if(response.status === 200){
yield put({
type: SET_CARD_LIST,
payload: response.data
});
}
}
在server.js上
const sagaMiddleWare = createSagaMiddleware();
const store = createStore(rootReducer, initialState,
applyMiddleware(sagaMiddleWare));
sagaMiddleWare.run(fetchCardListSaga);
现在,我如何分派操作,以便从API服务器获取数据,然后在服务器上调用res.send
我知道如何让它在工作中发挥作用
客户端使用react-redux。服务器端的问题是如何分派操作,以及如何在从服务器发送响应之前等待,直到存储更新。
您可以通过获取store
参考并调用store.dispatch
来分派操作,但您不能等待事件的发生。而且,您不能手动调用saga并对其进行yield
,因为它依赖于saga中间件
我将把请求放在一个helper函数中,在没有saga的情况下在服务器上获取数据,并以这种方式发送响应。并在传奇中使用相同的辅助功能
老实说,我不会在SSE上使用中间件。但是next.js是怎么做到的呢?我想这不是一个传奇故事