定义动态键的方法在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不会自动为您创建嵌套的对象或数组 - 您必须自己创建它们。