更新 Svelte 可写数组存储的正确方法是什么?

Nic*_*ser 12 svelte svelte-store

$orderItems = writable([])更新Svelte 可写数组存储的正确方法是什么(或者差异,如果两者都正确) ?我们假设result我想在 的末尾推送一个新项目$orderItems

orderItems.update(items => ([...items, result]))
Run Code Online (Sandbox Code Playgroud)

或者

$orderItems = [...$orderItems, result]
Run Code Online (Sandbox Code Playgroud)

Cor*_*rrl 14

两者都是正确的,另一种选择是

$orderItems.push(result)
$orderItems = $orderItems
Run Code Online (Sandbox Code Playgroud)

orderItems.update(items => {
    items.push(result)
    return items
})
Run Code Online (Sandbox Code Playgroud)

不同的是该$语法只能在组件内部使用,so.svelte文件。来自文档

每当您引用商店时,您都可以通过在组件中添加 $ 字符作为前缀来访问其值。这会导致 Svelte 声明前缀变量,在组件初始化时订阅存储并在适当时取消订阅。

如果您想从文件修改存储.js,只能通过.set() / .update()