我正在为一个用户帐户创建一个reducer,看起来像这样
export class Account {
id: number;
user: User;
constructor(id: number, user: User) {
this.id = id;
this.user = user;
}
}
字符串
我需要一个用户:
export class User {
name: string;
email: string;
token: string;
constructor(name: string, email: string, token: string) {
this.name = name;
this.email = email;
this.token = token;
}
}
型
所以我创建了一个这样的状态:
interface AccountState {
id: string;
user?: User;
}
型
当我像这样更新状态时:
const accountSlice = createSlice({
name: 'account',
initialState,
reducers: {
setAccount(state, action) {
state.id = action.payload.id;
state.user = new User(action.payload.name action.payload.email, action.payload.token)
},
}
})
型
我收到一个错误在状态中检测到一个不可序列化的值,在路径:account.user
中。值:{“email”:undefined,“name”:undefined,“token”:undefined}
我可以创建一个state,里面包含所有的user值,而不是user?:User,我看到有一个链接说我可以使用不可序列化的值,但不建议使用,https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state
所以我的问题是,什么是最好的方法来处理这种情况?我想创建一个userSlice
,并从accountSlice
更新其状态,但我不确定这是否是正确的方法,我找不到类似的例子在文档中。
1条答案
按热度按时间ecr0jaav1#
理想情况下,你应该使用普通对象而不是类:
字符串
类有不可序列化的函数和其他样板,正如你提到的,在Redux中是不鼓励的。