From: btea <2356281422@qq.com> Date: Mon, 14 Oct 2024 02:14:32 +0000 (+0800) Subject: chore: improve `renderComponentRoot` warn message (#10914) X-Git-Tag: v3.5.13~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a038505c653a1d0cb1e929257d3479cee83dcceb;p=thirdparty%2Fvuejs%2Fcore.git chore: improve `renderComponentRoot` warn message (#10914) --- diff --git a/packages/runtime-core/__tests__/rendererAttrsFallthrough.spec.ts b/packages/runtime-core/__tests__/rendererAttrsFallthrough.spec.ts index 9c985379c1..45d00579fe 100644 --- a/packages/runtime-core/__tests__/rendererAttrsFallthrough.spec.ts +++ b/packages/runtime-core/__tests__/rendererAttrsFallthrough.spec.ts @@ -6,6 +6,7 @@ import { Fragment, type FunctionalComponent, + Teleport, createBlock, createCommentVNode, createElementBlock, @@ -391,6 +392,26 @@ describe('attribute fallthrough', () => { expect(`Extraneous non-emits event listeners`).toHaveBeenWarned() }) + it('should warn when fallthrough fails on teleport root node', () => { + const Parent = { + render() { + return h(Child, { class: 'parent' }) + }, + } + const root = document.createElement('div') + + const Child = defineComponent({ + render() { + return h(Teleport, { to: root }, h('div')) + }, + }) + + document.body.appendChild(root) + render(h(Parent), root) + + expect(`Extraneous non-props attributes (class)`).toHaveBeenWarned() + }) + it('should dedupe same listeners when $attrs is used during render', () => { const click = vi.fn() const count = ref(0) diff --git a/packages/runtime-core/src/componentRenderUtils.ts b/packages/runtime-core/src/componentRenderUtils.ts index a15d18d56b..a1afae6201 100644 --- a/packages/runtime-core/src/componentRenderUtils.ts +++ b/packages/runtime-core/src/componentRenderUtils.ts @@ -190,7 +190,7 @@ export function renderComponentRoot( `Extraneous non-props attributes (` + `${extraAttrs.join(', ')}) ` + `were passed to component but could not be automatically inherited ` + - `because component renders fragment or text root nodes.`, + `because component renders fragment or text or teleport root nodes.`, ) } if (eventAttrs.length) {