From: edison Date: Mon, 2 Sep 2024 09:09:38 +0000 (+0800) Subject: fix(hydration): handle text nodes with 0 during hydration (#11772) X-Git-Tag: v3.5.0~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c756da24b2d8635cf52b4c7d3abf5bf938852cc5;p=thirdparty%2Fvuejs%2Fcore.git fix(hydration): handle text nodes with 0 during hydration (#11772) close #11771 --- diff --git a/packages/runtime-core/__tests__/hydration.spec.ts b/packages/runtime-core/__tests__/hydration.spec.ts index 142a171f7c..a2ea72638f 100644 --- a/packages/runtime-core/__tests__/hydration.spec.ts +++ b/packages/runtime-core/__tests__/hydration.spec.ts @@ -152,10 +152,10 @@ describe('SSR hydration', () => { // #7285 test('element with multiple continuous text vnodes', async () => { // should no mismatch warning - const { container } = mountWithHydration('
fooo
', () => - h('div', ['fo', createTextVNode('o'), 'o']), + const { container } = mountWithHydration('
foo0o
', () => + h('div', ['fo', createTextVNode('o'), 0, 'o']), ) - expect(container.textContent).toBe('fooo') + expect(container.textContent).toBe('foo0o') }) test('element with elements children', async () => { diff --git a/packages/runtime-core/src/hydration.ts b/packages/runtime-core/src/hydration.ts index 8060f9475b..15a460f99b 100644 --- a/packages/runtime-core/src/hydration.ts +++ b/packages/runtime-core/src/hydration.ts @@ -554,8 +554,7 @@ export function createHydrationFunctions( // JSX-compiled fns, but on the client the browser parses only 1 text // node. // look ahead for next possible text vnode - let next = children[i + 1] - if (next && (next = normalizeVNode(next)).type === Text) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { // create an extra TextNode on the client for the next vnode to // adopt insert(