mirror of
https://github.com/jaandrle/deka-dom-el
synced 2025-04-03 04:25:53 +02:00
39 lines
947 B
JavaScript
39 lines
947 B
JavaScript
import { el, on, scope } from "deka-dom-el";
|
|
import { S } from "deka-dom-el/signals";
|
|
|
|
// Create a component with reactive elements
|
|
function ReactiveCounter() {
|
|
const count = S(0);
|
|
scope.host(on.connected(ev=>
|
|
console.log(ev.target.__dde_reactive)
|
|
));
|
|
|
|
const counter = el('div', {
|
|
// This element will be added into the __dde_reactive property
|
|
textContent: count,
|
|
});
|
|
|
|
const incrementBtn = el('button', {
|
|
textContent: 'Increment',
|
|
onclick: () => count.set(count.get() + 1)
|
|
});
|
|
|
|
// Dynamic section will be added into __dde_signal property
|
|
const counterInfo = S.el(count, value =>
|
|
el('p', `Current count is ${value}`)
|
|
);
|
|
|
|
return el('div', { id: 'counter' }).append(
|
|
counter,
|
|
incrementBtn,
|
|
counterInfo
|
|
);
|
|
}
|
|
document.body.append(
|
|
el(ReactiveCounter),
|
|
);
|
|
|
|
// In DevTools console:
|
|
const counter = document.querySelector('#counter');
|
|
setTimeout(()=> console.log(counter.__dde_reactive), 1000); // See reactive bindings
|