Tengo dos páginas; index.js y other.js, en index.js tengo un método getServerSideProps ;
export async function getServerSideProps(context) { //code here } Quiero usar esta misma función en la página other.js. Debido a que el código en index.js getServerSideProps es bastante largo, tuve que importar getServerSideProps en index.js a other.js, haciendo algo como;
import { getServerSideProps } from "./index"; ... export { getServerSideProps }; Funciona bien, pero el problema es que quiero hacer otra solicitud en getServerSideProps que solo se ejecuta en la página other.js. Una forma de hacerlo es copiar el código getServerSideProps que escribí para index.js y pegarlo en other.js y modificar el código. El problema es que, como mencioné anteriormente, el código es bastante grande en getServerSideProps y no quiero copiarlo y pegarlo en todas las páginas que lo necesito.
Mi pregunta es, ¿cómo agrego otro getServerSideProps al que ya exporté de otra página? Básicamente, quiero fusionar los getServerSideProps exportados en index.js con los getServerSideProps que tengo localmente en other.js
Si desea volver a utilizar la misma función getServerSideProps , pero ejecutar condicionalmente un código específico en función de la página desde la que se llama, puede intentar utilizar el objeto context.req :
index.js
export default function Home({ data }) { return <>{data}</>; } export async function getServerSideProps(context) { let foo; // Parse `message.url` into parts. An alternative to using the `URL` class // would be to use `context.resolvedUrl`, but that will take more effort to // isolate pathnames when query parameters are involved. const reqUrl = new URL( context.req.url, `https://${context.req.headers.host}` ); const thisPage = reqUrl.pathname; const queryParams = reqUrl.searchParams; switch (thisPage) { case "/": // code for index.js foo = "Hello, index.js!"; break; case "/other": // code for other.js foo = "Hello, other.js!"; break; default: foo = "Hello, world!"; } // common code console.log("`thisPage`:", thisPage); console.log("`context.resolvedUrl`:", context.resolvedUrl); console.log("`queryParams`:", queryParams); return { props: { data: foo }, }; } other.js
import { getServerSideProps } from "./index"; export default function Other({ data }) { return <>{data}</>; } export { getServerSideProps };