← ~/workshop
/counter
wasmoon // pages/counter.lua
data-lua-module="pages/counter"
SOURCE
local h = require("h").h local reactive = require("reactive") local count, setCount = reactive.signal(0) local root = h("div", {}, h("h2", {}, "Counter"), h("p", {}, function() return "Count: " .. count() end), h("button", { onClick = function() setCount(count()-1) end, }, "-"), h("button", { onClick = function() setCount(count()+1) end, }, "+") ) dom.mount(root, "#app")
One signal, two handlers. The text node closure re-runs whenever count changes — no virtual DOM diff.