我正在编写一个react-redux应用程序。首先,它调用单个端点,该端点返回大量数据作为高度嵌套的JSON。然后,我对其进行规范化并将其放入我的redux-orm模式。
对我来说,在后端创建嵌套数据只是为了遍历前端的嵌套数据以对其进行规范化似乎是很愚蠢的,因为它来自标准化的PostgreSQL数据库。
Database = Normalized -->
API = Denormalized -->
Frontend = Normalized
Run Code Online (Sandbox Code Playgroud)
只是发送回标准化的API响应是最佳实践吗?
我们如何使用redux-toolkit的createSlice创建自定义 redux-orm 减速器?
是否有比此问题中提供的尝试更简单、推荐、更优雅或只是其他解决方案?
自定义 redux-orm 减速器的示例如下(简化):
function ormReducer(dbState, action) {
const session = orm.session(dbState);
const { Book } = session;
switch (action.type) {
case 'CREATE_BOOK':
Book.create(action.payload);
break;
case 'REMOVE_AUTHOR_FROM_BOOK':
Book.withId(action.payload.bookId).authors.remove(action.payload.authorId);
break;
case 'ASSIGN_PUBLISHER':
Book.withId(action.payload.bookId).publisherId = action.payload.publisherId;
break;
}
return session.state;
}
Run Code Online (Sandbox Code Playgroud)
可以使用redux-toolkit的createSlice功能来简化 reducer (基于 redux-toolkit使用指南):
const ormSlice = createSlice({
name: 'orm',
initialState: [],
reducers: {
createBook(state, action) {},
removeAuthorFromBook(state, action) {},
assignPublisher(state, …Run Code Online (Sandbox Code Playgroud)