如何在 sveltekit 中过滤商店列表?

How do I filter a store list in sveltekit?

正在尝试 return 封匹配 parentId = id 的邮件。

我不确定如何将参数传递给函数:

export const getReplies = derived([id], ([$messages, $id]) => {
    return $messages.filter(msg => {
        return msg.parentId === $id;
    });
});

组件:

$: replies = getReplies(msg.id);

derived函数returns一个store.
如果你的 messagesstoreidstore,你可以 从两者派生,像这样:

const replies = derived([messages, id], ([$messages, $id]) => {
  return $messages.filter(msg => {
    return msg.parentId === $id;
  });
})

工作示例:https://svelte.dev/repl/d3553520239a49dc8a0bc8b147b14cf2?version=3.46.4


或者您根本不需要使用 derived,例如:

$: replies = $messages.filter(msg => {
        return msg.parentId === id;
  });

工作示例:https://svelte.dev/repl/ab500b1bd0914172b7b409e044b5fa01?version=3.46.4

您可以创建一个 returns 派生商店

的函数
function getReplies(id) {
 return derived(
   messages, 
   $messages => $messages.filter(msg => msg.parentId == id)
 )
}

和你一样使用它:

$: replies = getReplies(msg.id)

现在 replies 是一个商店(因此您可以使用 $replies 访问它)并且每次消息(原始商店)更改或 msg.id 更改(此时将为您生成新的派生商店。