定義動態鍵的方法在redux的initialState中
P粉478835592
2023-09-05 14:15:53
<p>我有一個電子商務網站,每個用戶都有購物車,並使用redux和redux persist來儲存在本地儲存中。我想在一台電腦上處理多個帳戶,如果一個使用者有兩個帳戶,他可以在帳戶之間切換,與每個帳戶相關的資料會顯示出來,我的問題是如何處理一個系統上的多個帳戶,每個帳戶都有一個id。我想為初始狀態定義這個結構:</p>
<pre class="brush:php;toolbar:false;">const initialState = {
[userId]:{
cart:[]
}
}</pre>
<p>但是我遇到錯誤了</p>
<p>對於登錄,我使用next-auth來處理,並為獲取用戶登錄時的ID定義了這個reducer。 </p>
<pre class="brush:php;toolbar:false;">addUserId: async (state, action) => { //在這裡我接收到userId
const session = await getSession();
console.log(session);
},</pre>
由於您的初始狀態物件沒有定義的屬性,您可以從空的
initialState
物件開始。當您有資料來填充您的狀態時,您可以在reducer中動態地向狀態中新增[userId]
屬性。但是,在這樣做之前,您必須先用空物件初始化該屬性,然後再賦值{ cart:[] }
。請參閱文件中的範例,其中有一段文字說:Immer不會自動為您建立嵌套的物件或陣列 - 您必須自己建立它們。