搜尋

首頁  >  問答  >  主體

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粉299174094510 天前560

全部回覆(1)我來回復

  • P粉821274260

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

    當訊號的值發生變化時,它會通知其訂閱者,但是您並沒有設定一個新值,而是向其中插入了新的條目,因此這個操作不被視為更新。您應該設定一個新的地圖。您可以透過複製舊地圖將插入的值移至新地圖中。

    回覆
    0
  • 取消回覆