Explorar el Código

fix(runtime-dom): patch `textContent` on svg properly (#4301)

fix #4296
edison hace 4 años
padre
commit
e7b0a9d3cf

+ 7 - 0
packages/runtime-dom/__tests__/patchAttrs.spec.ts

@@ -10,6 +10,13 @@ describe('runtime-dom: attrs patching', () => {
     expect(el.getAttributeNS(xlinkNS, 'href')).toBe(null)
   })
 
+  test('textContent attributes /w svg', () => {
+    const el = document.createElementNS('http://www.w3.org/2000/svg', 'use')
+    patchProp(el, 'textContent', null, 'foo', true)
+    expect(el.attributes.length).toBe(0)
+    expect(el.innerHTML).toBe('foo')
+  })
+
   test('boolean attributes', () => {
     const el = document.createElement('input')
     patchProp(el, 'readonly', null, true)

+ 2 - 2
packages/runtime-dom/src/patchProp.ts

@@ -68,8 +68,8 @@ function shouldSetAsProp(
 ) {
   if (isSVG) {
     // most keys must be set as attribute on svg elements to work
-    // ...except innerHTML
-    if (key === 'innerHTML') {
+    // ...except innerHTML & textContent
+    if (key === 'innerHTML' || key === 'textContent') {
       return true
     }
     // or native onclick with function values