我有一个电子商务网站,每个用户都有购物车,并使用redux和redux持久化处理此存储在本地存储。我想在一台计算机上处理多个帐户,如果用户有两个帐户,他可以在帐户和与每个帐户相关的数据之间切换显示,我的问题是如何在一个系统上处理多个帐户,每个帐户都有id。我想为初始状态定义这个结构:
const initialState = {
[userId]:{
cart:[]
}
但我得到了错误
对于登录,我用next-auth处理这个问题,并定义了这个reducer,用于在用户登录时获取ID。
addUserId: async (state, action) => { //here I receive userId
const session = await getSession();
console.log(session);
},
1条答案
按热度按时间zhte4eai1#
由于初始状态对象没有定义的属性,所以可以从一个空的
initialState
对象开始。当你有数据来水合你的状态时,你可以动态地将[userId]
属性添加到你的reducer中的状态。但是,在这样做的时候,你必须先用一个空对象初始化该属性,然后才能赋值{ cart:[] }
。请参阅文档中的例子,下面的文字是:Immer不会自动为您创建嵌套对象或数组,需要您自己创建。