我正在尝试使用 SvelteMap:https://svelte.dev/docs/svelte/svelte-reactivity#SvelteMap
但由于某种原因,它没有反应。
我正在从 .svelte 文件导出它:
export const items = new SvelteMap<number, Item>();
Item
是一个对象。
然后在函数内部我改变内容,例如:
const item = items.get(num);
item.someProp = newValue;
地图已更新,但组件中的反应性不起作用。
我也尝试重新分配该功能中的项目
const item = items.get(num);
item.someProp = newValue;
items.set(num, item);
还是不行..
该地图不会使其内容产生反应,只会使其自身的属性和方法产生反应。
因此,您放入地图的项目需要有状态,例如
操场
(对于普通对象和数组,在对象周围
$state
创建一个代理包装器,它将触发在发生变化时触发反应的信号。具有属性的类实例$state
也可以工作。)如果您无法使该项目具有反应性(例如因为它来自单独的库),则可以将实例包装在对象中,并在修改后分配一个新的包装器以触发地图的反应性。
操场