如果文本输入在每个循环中,则Svelte组件不会使用新值重新渲染

时间:2019-08-23 12:22:36

标签: javascript svelte svelte-store

我有一个编辑器,其中包含each循环内的输入。当输入中的文本更改时,可写存储将更新,但是在另一个组件中,我不会遍历存储重渲染中的值。

<script>
    import { writable } from "svelte/store";
    const invoiceItems = writable([
         {
             id: 0,
             text: "Test",
        }
    ]);
</script>
<input 
    type="text" 
    bind:value={$invoiceItems[0].text} 
    on:keyup={() => {console.log($invoiceItems[0].text);}} 
/>
{#each $invoiceItems as item, index (item.id)}
    <input 
        type="text" 
        bind:value={item.text} 
        on:keyup={() => {console.log($invoiceItems[0].text);}} 
    />
{/each}
{#each $invoiceItems as { id, text }}
    <div>{id}{text}</div>
{/each}
<div>
    {$invoiceItems[0].text}
</div>

REPL:https://svelte.dev/repl/0fa5f5cd1ee247afbbdc9a77266fb4f8?version=3.9.1

上面的REPL实时显示了问题-在第二个输入中键入不会更新文本,而在循环外部则可以正常工作。我怎样才能使它正确地重新渲染?

0 个答案:

没有答案