From a4aa1df7da9e37caf957d3d9a037ad54546f5e2e Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Thu, 14 Apr 2022 16:35:09 +0200 Subject: [PATCH] rsc: keep static page props (#36157) --- packages/next/server/render.tsx | 11 ++--------- .../switchable-runtime/pages/_app.server.js | 2 +- .../switchable-runtime/pages/node-rsc.server.js | 2 ++ .../test/switchable-runtime.test.js | 5 ++++- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/next/server/render.tsx b/packages/next/server/render.tsx index b83440b2ca16661..b41e52f365398c6 100644 --- a/packages/next/server/render.tsx +++ b/packages/next/server/render.tsx @@ -431,14 +431,7 @@ function createServerComponentRenderer( return root } - // Although it's not allowed to attach some static methods to Component, - // we still re-assign all the component APIs to keep the behavior unchanged. - for (const methodName of [ - 'getInitialProps', - 'getStaticProps', - 'getServerSideProps', - 'getStaticPaths', - ]) { + for (const methodName of Object.keys(Component)) { const method = (Component as any)[methodName] if (method) { ;(ServerComponentWrapper as any)[methodName] = method @@ -1375,7 +1368,7 @@ export async function renderToHTML( {isServerComponent && !!AppMod.__next_rsc__ ? ( // _app.server.js is used. - + ) : ( )} diff --git a/test/integration/react-streaming-and-server-components/switchable-runtime/pages/_app.server.js b/test/integration/react-streaming-and-server-components/switchable-runtime/pages/_app.server.js index 0d80a5a8abb31ec..15ab2f9fdc7166d 100644 --- a/test/integration/react-streaming-and-server-components/switchable-runtime/pages/_app.server.js +++ b/test/integration/react-streaming-and-server-components/switchable-runtime/pages/_app.server.js @@ -1,6 +1,6 @@ export default function AppServer({ children }) { return ( -
+
{children}
diff --git a/test/integration/react-streaming-and-server-components/switchable-runtime/pages/node-rsc.server.js b/test/integration/react-streaming-and-server-components/switchable-runtime/pages/node-rsc.server.js index 4a725cf2f07041e..aa0133d5f374b5e 100644 --- a/test/integration/react-streaming-and-server-components/switchable-runtime/pages/node-rsc.server.js +++ b/test/integration/react-streaming-and-server-components/switchable-runtime/pages/node-rsc.server.js @@ -13,6 +13,8 @@ export default function Page() { ) } +Page.title = 'node-rsc' + export const config = { runtime: 'nodejs', } diff --git a/test/integration/react-streaming-and-server-components/test/switchable-runtime.test.js b/test/integration/react-streaming-and-server-components/test/switchable-runtime.test.js index eb7462329cfe983..eec271208a27fe4 100644 --- a/test/integration/react-streaming-and-server-components/test/switchable-runtime.test.js +++ b/test/integration/react-streaming-and-server-components/test/switchable-runtime.test.js @@ -38,7 +38,7 @@ async function testRoute(appPort, url, { isStatic, isEdge, isRSC }) { // Should be re-rendered. expect(renderedAt1).toBeLessThan(renderedAt2) } - const customAppServerHtml = '
' + const customAppServerHtml = '
{ isEdge: false, isRSC: true, }) + + const html = await renderViaHTTP(context.appPort, '/node-rsc') + expect(html).toContain('data-title="node-rsc"') }) it('should build /node-rsc-ssr as a dynamic page with the nodejs runtime', async () => {