JSFiddle - React, Tailwind, and code Playground
by Alex
HTML
<hello-component data-name="James"></hello-component>
JavaScript
class HelloComponent extends HTMLElement {
static get observedAttributes() {
return ['data-name'];
}
// custom methods
render() {
this.innerHTML = `Hello ${this.name}`;
}
get name() {
return this.getAttribute('data-name');
}
// lifecycle hooks
connectedCallback() {
this.render();
}
attributeChangedCallback(attrName, oldVal, newVal) {
this.render();
}
}
// add into the 'real' dom as a valid tag
window.customElements.define('hello-component', HelloComponent);