【发布时间】:2021-05-21 16:35:39
【问题描述】:
我正在尝试规范化以下结构 Array<Application> 的数据数组。使用createEntityAdapter。
使用createAsyncThunk 获取数据并返回它们后,我确实将它们设置在extraReducers 中,如下所示:
applicationsAdapter.setAll(state, action.payload)
在 Redux DevTools 中,我可以看到数据如下所示:
{
applications: {
ids: [
'60a684fb90957536f185ea88',
],
entities: {
'60a684fb90957536f185ea88': {
id: '60a684fb90957536f185ea88',
title: 'Article1',
description: 'The best article ever',
groups: [
{
id: 'bPDGd8uOkmKKAO3FyoTKE',
title: 'Group 1',
voters: [
{
user: {
uid: '344bc9b8-671b-4de5-ab2d-a619ea34d0ba',
username: 'tran',
},
vote: 'DECLINED'
}
]
}
],
deadline: "2021-05-20",
budget: 0,
createdAt: '2021-05-20',
createdBy: {
uid: 'ab2a8f19-c851-4a5f-9438-1000bfde205a',
username: 'admin',
},
},
}
问题: 数据未完全标准化。如何规范化组、选民和用户对象?
接口如下:
export interface Application {
id: string;
title: string;
description: string;
groups: Array<GroupElement>;
deadline: string;
budget?: number;
createdAt: string;
createdBy: User;
}
export interface GroupElement {
id: string;
title: string;
voters: Array<Voter>;
}
export interface User {
uid: string;
username: string;
}
export interface Voter {
user: User;
vote: Decision;
}
【问题讨论】:
标签: redux react-redux redux-toolkit createentityadapter