next/document#DocumentProps TypeScript Examples
The following examples show how to use
next/document#DocumentProps.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: _document.tsx From use-selected-items-hook with MIT License | 6 votes |
class MyDocument extends Document<DocumentProps> {
render(): JSX.Element {
return (
<Html>
<Head>
<link rel="icon" type="image/png" sizes="16x16" href="/favicon.png" />
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
Example #2
Source File: _document.tsx From next-right-now-admin with MIT License | 6 votes |
render(): JSX.Element {
const { lang }: DocumentProps & { lang: string } = this.props;
return (
<html lang={this.props.lang}>
<Head />
<body className={classnames('nrn', `lang-${lang}`)}>
<Main />
<NextScript />
</body>
</html>
);
}
Example #3
Source File: render.tsx From next-page-tester with MIT License | 4 votes |
export default async function serverRenderDocument({ options, appProps, pageProps, pageObject, wrapWithRouter, }: { options: ExtendedOptions; appProps: PageProps | undefined; pageProps: PageProps | undefined; pageObject: PageObject; wrapWithRouter: (children: JSX.Element) => JSX.Element; }): Promise<JSX.Element> { return executeAsIfOnServer(async () => { const { useDocument } = options; const { documentFile: { default: DocumentComponent }, appFile: { default: AppComponent }, pageFile: { default: PageComponent }, wrappersFile, } = pageObject.files.server; const wrappers = { appWrapper: wrappersFile?.App, pageWrapper: wrappersFile?.Page, }; const render = (App: NextApp, Page: NextPage) => { return renderEnhancedApp({ App, Page, appProps, pageProps, wrappers, }); }; // Return an empty dummy document if useDocument is not enabled if (!useDocument) { return ( <html> <head></head> <body> <div id={NEXT_ROOT_ELEMENT_ID}> {wrapWithRouter(render(AppComponent, PageComponent))} </div> </body> </html> ); } const renderPage: RenderPage = (options = {}) => { const { App: EnhancedApp, Component: EnhancedComponent, } = enhanceComponents(options, AppComponent, PageComponent); let head: JSX.Element[] = []; const html = renderToString( // @NOTE: implemented from: // https://github.com/vercel/next.js/blob/v10.0.3/packages/next/next-server/server/render.tsx#L561 // Now in: https://github.com/vercel/next.js/blob/v11.1.0/packages/next/server/render.tsx#L639 <HeadManagerContext.Provider value={{ updateHead: (state) => { head = state; }, mountedInstances: new Set(), }} > {wrapWithRouter(render(EnhancedApp, EnhancedComponent))} </HeadManagerContext.Provider> ); return { html, head }; }; const initialProps = await fetchDocumentData({ Document: DocumentComponent, renderPage, pageObject, }); const documentProps: DocumentProps = { ...initialProps, buildManifest: { ampDevFiles: [], ampFirstPages: [], devFiles: [], lowPriorityFiles: [], polyfillFiles: [], pages: { [APP_PATH]: [], [pageObject.pagePath]: [], }, }, __NEXT_DATA__: { page: pageObject.pagePath, query: pageObject.query, buildId: 'next-page-tester', props: { pageProps }, }, scriptLoader: {}, docComponentsRendered: {}, dangerousAsPath: '', ampPath: '', inAmpMode: false, dynamicImports: [], isDevelopment: false, hybridAmp: false, canonicalBase: '', headTags: [], devOnlyCacheBusterQueryString: '', // @ts-expect-error We don't expect to use this method useMaybeDeferContent: () => {}, }; // @ts-expect-error this method doesn't exist since Next.js v11.1.2 and useDocument option is currently disabled return DocumentComponent.renderDocument(DocumentComponent, documentProps); }); }