← ~/workshop
/todos
wasmoon // pages/todolist.lua
data-lua-module="pages/todolist"
SOURCE
local items, setItems = reactive.signal({}) local draft, setDraft = reactive.signal("") local function addItem() local d = draft() if d == "" then return end local copy = {} for i, v in ipairs(items()) do copy[i] = v end copy[#copy+1] = d setItems(copy) setDraft("") end reactive.effect(function() list.innerHTML = "" for _, v in ipairs(items()) do dom.append(list, h("li", {}, v)) end end)
Two signals + one effect. The effect tears down and rebuilds the list whenever the items signal mutates.