如何在 Svelte 中订购键控每个块

How to order Keyed each blocks in Svelte

我创建了一个包含用户列表的商店,我想使用不同的参数进行订购。

store.js

export const users = writable([
  {
    "id": 11,
    "name": "Kepler",
  },
  {
    "id": 13,
    "name": "Planck",
  },
// more users going in here

为此,我使用了来自 Lodash 的 orderBy

案例 A。 如果我不使用键控每个块,那么 orderBy 将按预期工作。

App.svelte

{#each _.orderBy($users, [param], [order]) as user}
  <div>{user.id} {user.name}</div>
{/each}

但是如果我删除我的商店或对我的商店进行一些特定更改,更新将无法正常工作。 A better explanation of what's happening in the Svelte's docs.

案例 B。 如果我使用键控每个块然后更新按预期工作但不是 orderBy

App.svelte

{#each _.orderBy($users, [param], [order]) as user (user.id)}
    <div>{user.id} {user.name}</div>
{/each}

Here a Real Example on Svelte REPL.

访问上方 link 并单击按钮以在升序或降序之间切换。

可能我遗漏了一些关于键控每个块的东西,但想弄清楚 Svelte 专家是如何解决这个问题的。

这是 3.38 版中的错误。刚刚发布的 3.39 版本解决了这个问题。