在 SvelteJS v3 中访问 Store 的内部循环值

Accessing Store's value inside loop in SvelteJS v3

我正在从一组对象构建一个仪表板,这些对象具有 store 作为其 属性 的一部分。每个商店都从不同的来源独立更新。

我的问题是我无法读取 each 循环中的 store 值。

为了简化下面的代码示例,我使用 tweened 而不是 store

以下代码也可以在 Svlete REPL 中使用 https://svelte.dev/repl/9a17102e7d32471a940ba007e5b56db0?version=3.6.7

<script>
    import { tweened } from 'svelte/motion';

    const data = [{
        label: 'one',
        value: tweened(0)
    }, {
        label: 'two',
        value: tweened(0)
    }]

</script>

<ul>
    {#each data as item}
        <li>{item.label} ({item.$value})</li>
    {/each}
</ul>

{item.$value}部分returnsundefined

这目前不可能 — 'contextual stores' (#2016) 有一个未解决的问题可以让你做这种事情...

<ul>
  {#each data as { label, value }}
    <li>{label} ({$value})</li>
  {/each}
</ul>

...但我们还没有到那一步。同时,解决方法是将商店传递给组件:

<ul>
  {#each data as item}
    <ListItem label={item.label} value={item.value}/>
  {/each}
</ul>

在组件内部,您有 export let label, value,您可以按预期使用 $value