From b1de6419e6a2b75f53fe62beee519770843e55fa Mon Sep 17 00:00:00 2001 From: Jinbao1001 Date: Mon, 1 Apr 2024 14:40:46 +0800 Subject: [PATCH] fix: NormalizeMeta component for render root --- packages/renderer-react/src/html.tsx | 85 ++++++++++++++++---------- packages/renderer-react/src/server.tsx | 6 +- packages/renderer-react/src/types.ts | 3 +- 3 files changed, 55 insertions(+), 39 deletions(-) diff --git a/packages/renderer-react/src/html.tsx b/packages/renderer-react/src/html.tsx index c80adc363e70..06cfa736db75 100644 --- a/packages/renderer-react/src/html.tsx +++ b/packages/renderer-react/src/html.tsx @@ -36,55 +36,74 @@ function generatorStyle(style: string) { : { type: 'style', content: style }; } +const NormalizeMetadata = (props: IHtmlProps) => { + const { metadata } = props; + return ( + <> + {metadata?.title && {metadata.title}} + {metadata?.favicons?.map((favicon: string, key: number) => { + return ; + })} + {metadata?.description && ( + + )} + {metadata?.keywords?.length && ( + + )} + {metadata?.metas?.map((em: any) => ( + + ))} + + {metadata?.links?.map((link: Record, key: number) => { + return ; + })} + {metadata?.styles?.map((style: string, key: number) => { + const { type, href, content } = generatorStyle(style); + if (type === 'link') { + return ; + } else if (type === 'style') { + return ; + } + })} + {metadata?.headScripts?.map((script: IScript, key: number) => { + const { content, ...rest } = normalizeScripts(script); + return ( + + ); + })} + + ); +}; + export function Html({ children, loaderData, manifest, metadata, + renderFromRoot, }: React.PropsWithChildren) { // TODO: 处理 head 标签,比如 favicon.ico 的一致性 // TODO: root 支持配置 + + if (renderFromRoot) { + return ( + <> + +
{children}
+ + ); + } return ( - {metadata?.title && {metadata.title}} - {metadata?.favicons?.map((favicon: string, key: number) => { - return ; - })} - {metadata?.description && ( - - )} - {metadata?.keywords?.length && ( - - )} - {metadata?.metas?.map((em: any) => ( - - ))} - - {metadata?.links?.map((link: Record, key: number) => { - return ; - })} - {metadata?.styles?.map((style: string, key: number) => { - const { type, href, content } = generatorStyle(style); - if (type === 'link') { - return ; - } else if (type === 'style') { - return ; - } - })} - {metadata?.headScripts?.map((script: IScript, key: number) => { - const { content, ...rest } = normalizeScripts(script); - return ( - - ); - })} {manifest?.assets['umi.css'] && ( )} + {normalizeMetadata(metadata)}