en next.js, quiero operar la función saga dentro de getServerSideProps, se envía a la tienda del lado del servidor, pero existe el problema de que no se comparte con la tienda del cliente cuando se ejecuta la acción de hidratación. Supongo que se ejecuta rehidratar antes de ejecutar takeEvery, ¿es un problema de versión?
Quiero mover la lógica asíncrona a sagaFunction y manejarla.
es mi codigo
//saga.ts export function* getProductDetailSaga({ payload }: ReturnType<typeof getProductDetailAction>) { try { const { data } = yield* call(getProductDetail, payload); yield put(setFetchedProductDetails(data.productDetail)); } catch (error) { console.error(error); } } export default function* productDetailSaga() { yield all([ takeEvery(getProductDetailAction.type, getProductDetailSaga), } //[productId].tsx export const getServerSideProps = wrapper.getServerSideProps((store) => async (ctx) => { const { productId } = ctx.query; const { osCode, deviceId, session, } = store.getState().user; store.dispatch( getProductDetailAction({ osCode, deviceId, session, productId, }) ); store.dispatch(END); await store.sagaTask.toPromise(); });creo que END action y sagaTask no funcionan correctamente.
pero esto funciona bien.
export const getServerSideProps = wrapper.getServerSideProps((store) => async (ctx) => { const { productId } = ctx.query; const { osCode, deviceId, session } = store.getState().user; const { data } = await getProductDetail({ osCode, deviceId, session, productId, }); store.dispatch(setFetchedProductDetails(data.productDetail || null)); });