循环遍历数组的每个块都不能在 svelte 中工作

Each block looping through array is not working in svelte

所以我一直在研究这个 svelte 项目,它是一个笔记应用程序。所以我的目标是,每当我按下提交按钮时,便条就会被添加到一个数组中,并且该数组会以每个块的形式打印出来。但是我的数组得到了更新,但我的 UI 没有。每次我按下提交按钮时,我都会让控制台记录数组。我还必须添加任何组件。你可以看看我的代码:

    let value = ""

    let values = []

    function logic(){
        values.push(value)
    }
    
</script>

<input type="text" bind:value={value}>
<br>
<button on:click={logic}>Submit</button>
<hr>


{#each values as name, index}
        <li>{index} - {name}</li>
{/each}


<style>
    input {
        height:100px;
        width: 200px;
        margin-bottom: 1em;
    }
    button{
        height: 50px;
        width: 100px;
    }
</style>

希望你能找到问题所在, 提前致谢

您的问题似乎是因为将项目推入数组不会触发 Svelte 的反应性。由于从数组存储到变量中的值只是内存位置,Svelte 不会检测到变量的任何变化,因为它改变的是数组的值而不是变量。

苗条的开发者建议尝试重新分配数组的值,例如:


<script>
    let value = ""

    let values = []

    function logic(){
        // As you can see here, I'm reassigning the array.
        values = [...values, value]
    }
    
</script>

<input type="text" bind:value={value}>
<br>
<button on:click={logic}>Submit</button>
<hr>


{#each values as name, index}
        <li>{index} - {name}</li>
{/each}


<style>
    input {
        height:100px;
        width: 200px;
        margin-bottom: 1em;
    }
    button{
        height: 50px;
        width: 100px;
    }
</style>

这是 Svelte 文档提供的教程: https://svelte.dev/tutorial/updating-arrays-and-objects