Solidjs:在createStore中使用Map时,不会在更改时进行更新。
P粉299174094
P粉299174094 2023-07-20 14:47:02
0
1
569

我对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粉299174094
P粉299174094

全部回复(1)
P粉821274260

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板