Skip to content

each()

Render a reactive list with optional keyed DOM reconciliation.

function each<T>(
items: () => T[],
render: (item: T, index: number) => WhisqNode,
options?: { key: (item: T) => unknown },
): (() => Child[]) | WhisqNode
ParamTypeDescription
items() => T[]Reactive array of items
render(item: T, index: number) => WhisqNodeRender function per item
options.key(item: T) => unknownKey function for reconciliation (optional)
import { signal, each, ul, li } from "@whisq/core";
const todos = signal([
{ id: 1, text: "Learn Whisq" },
{ id: 2, text: "Build an app" },
]);
ul(
each(() => todos.value, (todo) =>
li(todo.text),
{ key: (todo) => todo.id },
),
)