是否有可能以某种方式直接更改派生存储的值?

4 javascript svelte sveltekit

我目前正在使用 SvelteKit。

我有一家derived商店,这是必要的,因为它依赖于另一家商店。现在我需要derived直接更改商店中的一些值。问题是,derived据我所知,商店是不可修改的。

有没有办法derived直接改变商店的价值?

例如,如果我有一个derived名为的商店tiles,它是一个对象数组,并且我想更改其中一个对象的属性 ( $tiles[n].x = 'something new')

H.B*_*.B. 10

您只需添加一个即可使派生存储可写set

您将需要访问从中派生该值的源对象,或者需要以保留相关对象引用的方式合并新值。(尽管在后一种情况下,您可能仍然需要在父存储上进行虚拟重新分配,以触发更新。)

例如

const parent = writable({ items: [{ name: 'pochi' }, { name: 'maru' }]});
const items = derived(parent, value => value.items);
items.set = newItems => $parent.items = newItems;
Run Code Online (Sandbox Code Playgroud)

REPL