From f0c61d8f001becb23a5c2c0624d4596c2e29cfba Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Mon, 12 Jan 2026 13:31:03 +0100 Subject: [PATCH 1/3] fix: keyed readme example misses keyfn --- packages/keyed/README.md | 48 +++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/packages/keyed/README.md b/packages/keyed/README.md index 7ae3db631..4ca2940f1 100644 --- a/packages/keyed/README.md +++ b/packages/keyed/README.md @@ -47,30 +47,32 @@ The `keyArray` primitive takes 4 arguments: - `options` - a fallback for when the input list is empty or missing _(Optional)_ ```ts -const mapped = keyArray(source, (model, index) => { - const [name, setName] = createSignal(model().name); - const [description, setDescription] = createSignal(model().description); - - createComputed(() => { - setName(model().name); - setDescription(model().description); +const mapped = keyArray(source, + (model) => checksum(`${model().name}|${model().description}`), + (model, index) => { + const [name, setName] = createSignal(model().name); + const [description, setDescription] = createSignal(model().description); + + createComputed(() => { + setName(model().name); + setDescription(model().description); + }); + + return { + id: model.id, + get name() { + return name(); + }, + get description() { + return description(); + }, + get index() { + return index(); + }, + setName, + setDescription, + }; }); - - return { - id: model.id, - get name() { - return name(); - }, - get description() { - return description(); - }, - get index() { - return index(); - }, - setName, - setDescription, - }; -}); ``` Notice that both the value and index arguments are signals. Items are identified only by keys, it means that the items could be copied, replaced, changed, but as long as the key is the same, `keyArray` will treat it as the same item. From 00af88d8acbe022b6c1b13177e495e54ace4bd40 Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Mon, 12 Jan 2026 13:32:45 +0100 Subject: [PATCH 2/3] add changeset --- .changeset/gentle-eyes-lead.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/gentle-eyes-lead.md diff --git a/.changeset/gentle-eyes-lead.md b/.changeset/gentle-eyes-lead.md new file mode 100644 index 000000000..b6ef613e9 --- /dev/null +++ b/.changeset/gentle-eyes-lead.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/keyed": patch +--- + +docs: add missing keyfn to example From a56e80f256fdd69917a115fa9c788b11640e2aeb Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Mon, 12 Jan 2026 14:08:54 +0100 Subject: [PATCH 3/3] simplify keyfn --- packages/keyed/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/keyed/README.md b/packages/keyed/README.md index 4ca2940f1..c167a9211 100644 --- a/packages/keyed/README.md +++ b/packages/keyed/README.md @@ -48,7 +48,7 @@ The `keyArray` primitive takes 4 arguments: ```ts const mapped = keyArray(source, - (model) => checksum(`${model().name}|${model().description}`), + (model) => model.id, (model, index) => { const [name, setName] = createSignal(model().name); const [description, setDescription] = createSignal(model().description);