mirror of https://github.com/vuejs/core.git
fix(custom-elements): should not reflect non-decalred properties set before upgrade
This commit is contained in:
parent
665f2ae121
commit
5e50909100
|
@ -201,15 +201,18 @@ describe('defineCustomElement', () => {
|
||||||
expect(props.dataAge).toBe(5)
|
expect(props.dataAge).toBe(5)
|
||||||
},
|
},
|
||||||
render() {
|
render() {
|
||||||
return `foo: ${this.foo}`
|
return h('div', `foo: ${this.foo}`)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const el = document.createElement('my-el-upgrade') as any
|
const el = document.createElement('my-el-upgrade') as any
|
||||||
el.foo = 'hello'
|
el.foo = 'hello'
|
||||||
el.dataset.age = 5
|
el.dataset.age = 5
|
||||||
|
el.notProp = 1
|
||||||
container.appendChild(el)
|
container.appendChild(el)
|
||||||
customElements.define('my-el-upgrade', E)
|
customElements.define('my-el-upgrade', E)
|
||||||
expect(el.shadowRoot.innerHTML).toBe(`foo: hello`)
|
expect(el.shadowRoot.firstChild.innerHTML).toBe(`foo: hello`)
|
||||||
|
// should not reflect if not declared as a prop
|
||||||
|
expect(el.hasAttribute('not-prop')).toBe(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
// https://github.com/vuejs/core/issues/6163
|
// https://github.com/vuejs/core/issues/6163
|
||||||
|
|
|
@ -248,7 +248,12 @@ export class VueElement extends BaseClass {
|
||||||
// check if there are props set pre-upgrade or connect
|
// check if there are props set pre-upgrade or connect
|
||||||
for (const key of Object.keys(this)) {
|
for (const key of Object.keys(this)) {
|
||||||
if (key[0] !== '_') {
|
if (key[0] !== '_') {
|
||||||
this._setProp(key, this[key as keyof this], true, false)
|
this._setProp(
|
||||||
|
key,
|
||||||
|
this[key as keyof this],
|
||||||
|
rawKeys.includes(key),
|
||||||
|
false
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue