我對(duì)Solidjs還相對(duì)新手,也許我忽略了一些東西,但考慮到以下範(fàn)例,我試著理解這裡的問題:
const [state, setState] = createStore({ items: new Map() }); // e.g. Map<number, string>
在一個(gè)元件中,假設(shè)我想要使用儲(chǔ)存的衍生狀態(tài),像這樣:
export const Overview = () => { const count = () => state.items.size; return (<div>{count()</div>); };
如果我現(xiàn)在在地圖中新增一個(gè)條目,我以為計(jì)數(shù)屬性會(huì)自動(dòng)更新,因?yàn)槲沂褂昧艘蕾囮P(guān)係。
我嘗試了將這個(gè)範(fàn)例中的地圖替換為數(shù)組,這樣做效果非常好,組件顯示了正確和預(yù)期的值。
有人可以指導(dǎo)我在文件中找到正確的部分,或者解釋為什麼數(shù)組可以工作而地圖不行嗎?
當(dāng)訊號(hào)的值發(fā)生變化時(shí),它會(huì)通知其訂閱者,但是您並沒有設(shè)定一個(gè)新值,而是向其中插入了新的條目,因此這個(gè)操作不被視為更新。您應(yīng)該設(shè)定一個(gè)新的地圖。您可以透過複製舊地圖將插入的值移至新地圖中。