首页  >  问答  >  正文

Solidjs:在createStore中使用Map时,不会在更改时进行更新。

我对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>);
};

如果我现在向地图中添加一个新条目,我本以为计数属性会自动更新,因为我使用了依赖关系。

我尝试了将这个示例中的地图替换为数组,这样做效果非常好,组件显示了正确和预期的值。

有人可以指导我在文档中找到正确的部分,或者解释为什么数组可以工作而地图不行吗?

P粉299174094P粉299174094458 天前513

全部回复(1)我来回复

  • P粉821274260

    P粉8212742602023-07-21 10:52:47

    当信号的值发生变化时,它会通知其订阅者,但是您并没有设置一个新值,而是向其中插入了新的条目,因此这个操作不被视为更新。您应该设置一个新的地图。您可以通过克隆旧地图将插入的值移动到新地图中。

    回复
    0
  • 取消回复