我对Solidjs还相对新手,也许我忽略了一些东西,但是考虑到以下示例,我尝试理解这里的问题:
const [state, setState] = createStore({ items: new Map() }); // e.g. Map<number, string>
在一个组件中,假设我想要使用存储的派生状态,像这样:
export const Overview = () => { const count = () => state.items.size; return (<div>{count()</div>); };
如果我现在向地图中添加一个新条目,我本以为计数属性会自动更新,因为我使用了依赖关系。
我尝试了将这个示例中的地图替换为数组,这样做效果非常好,组件显示了正确和预期的值。
有人可以指导我在文档中找到正确的部分,或者解释为什么数组可以工作而地图不行吗?
当信号的值发生变化时,它会通知其订阅者,但是您并没有设置一个新值,而是向其中插入了新的条目,因此这个操作不被视为更新。您应该设置一个新的地图。您可以通过克隆旧地图将插入的值移动到新地图中。