A simple low level base class for creating fast, lightweight web components.
Full documentation is available at lit.dev/docs/api/ReactiveElement/.
ReactiveElement
is a base class for writing web components that react to changes in properties and attributes. ReactiveElement
adds reactive properties and a batching, asynchronous update lifecycle to the standard web component APIs. Subclasses can respond to changes and update the DOM to reflect the element state.
ReactiveElement
doesn't include a DOM template system, but can easily be extended to add one by overriding the update()
method to call the template library. LitElement
is such an extension that adds lit-html
templating.
import { ReactiveElement, html, css, customElement, property, PropertyValues, } from '@lit/reactive-element'; // This decorator defines the element. @customElement('my-element') export class MyElement extends ReactiveElement { // This decorator creates a property accessor that triggers rendering and // an observed attribute. @property() mood = 'great'; static styles = css` span { color: green; } `; contentEl?: HTMLSpanElement; // One time setup of shadowRoot content. createRenderRoot() { const shadowRoot = super.createRenderRoot(); shadowRoot.innerHTML = `Web Components are <span></span>!`; this.contentEl = shadowRoot.firstElementChild; return shadowRoot; } // Use a DOM rendering library of your choice or manually update the DOM. update(changedProperties: PropertyValues) { super.update(changedProperties); this.contentEl.textContent = this.mood; } }
<my-element mood="awesome"></my-element>
Note, this example uses decorators to create properties. Decorators are a proposed standard currently available in TypeScript or Babel. ReactiveElement also supports a vanilla JavaScript method of declaring reactive properties.
$ npm install @lit/reactive-element
Or use from lit
:
Please see CONTRIBUTING.md.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4