From e6459e7304df223e4884bc54cbb8d1f4d759b622 Mon Sep 17 00:00:00 2001 From: Taku Amano Date: Mon, 19 Aug 2024 09:54:49 +0900 Subject: [PATCH] fix(jsx/dom): Fixed a bug that caused Script elements to turn into Style elements. (#3294) --- .../dom/intrinsic-element/components.test.tsx | 27 +++++++++++++++++++ src/jsx/dom/intrinsic-element/components.ts | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/jsx/dom/intrinsic-element/components.test.tsx b/src/jsx/dom/intrinsic-element/components.test.tsx index a9e29c2a7..d4e9e3609 100644 --- a/src/jsx/dom/intrinsic-element/components.test.tsx +++ b/src/jsx/dom/intrinsic-element/components.test.tsx @@ -750,6 +750,33 @@ describe('intrinsic element', () => { await Promise.resolve() expect(root.innerHTML).toBe('
Content
') }) + + it('should be inserted into body if has no props', async () => { + const App = () => { + return ( +
+ +
+ ) + } + render(, root) + expect(document.head.innerHTML).toBe('') + // prettier-ignore + expect(root.innerHTML).toBe('
') + }) + + it('should be inserted into body if has only src prop', async () => { + const App = () => { + return ( +
+ +
+ ) + } + render(, root) + expect(document.head.innerHTML).toBe('') + expect(root.innerHTML).toBe('
') + }) }) it('accept ref object', async () => { diff --git a/src/jsx/dom/intrinsic-element/components.ts b/src/jsx/dom/intrinsic-element/components.ts index 81060f0dd..a8d890074 100644 --- a/src/jsx/dom/intrinsic-element/components.ts +++ b/src/jsx/dom/intrinsic-element/components.ts @@ -226,7 +226,7 @@ export const title: FC = (props) => { export const script: FC> = (props) => { if (!props || ['src', 'async'].some((k) => !props[k])) { return newJSXNode({ - tag: 'style', + tag: 'script', props, }) }