Web Component Guidelines
A random selection of guidelines for how we write web components.
Scoped Elements
-
All elements which use other custom elements should use
ScopedElementsMixinfrom '@open-wc/scoped-elements' instead of requiring the used custom elements to be globally registered. This avoids the internally used elements to leak and avoids conflicts.class MyElement extends ScopedElementsMixin(LitElement) { static get scopedElements() { return { 'my-button': MyButton, 'my-panel': MyPanel, }; } } -
Instead of
document.createElement()when creating nested custom elements usethis.createScopedElement()func() { let elm = this.createScopedElement('my-panel'); }
Internal State
Internal state should be prefixed with a "_" and not provide an attribute by setting state: true:
static get properties() {
return {
_internalThing: {state: true},
}
}