标签: redux-orm

为React + Redux应用发送回规范化或非规范化的API响应更好吗

我正在编写一个react-redux应用程序。首先,它调用单个端点,该端点返回大量数据作为高度嵌套的JSON。然后,我对其进行规范化并将其放入我的redux-orm模式。
对我来说,在后端创建嵌套数据只是为了遍历前端的嵌套数据以对其进行规范化似乎是很愚蠢的,因为它来自标准化的PostgreSQL数据库。

Database = Normalized --> 
API = Denormalized --> 
Frontend = Normalized
Run Code Online (Sandbox Code Playgroud)

只是发送回标准化的API响应是最佳实践吗?

normalize denormalization reactjs redux redux-orm

6
推荐指数
1
解决办法
815
查看次数

用 redux-toolkit 重写 redux-orm reducer

问题(tl;博士)

我们如何使用redux-toolkitcreateSlice创建自定义 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-toolkitcreateSlice功能来简化 reducer (基于 redux-toolkit使用指南):

const ormSlice = createSlice({
  name: 'orm',
  initialState: [],
  reducers: {
    createBook(state, action) {},
    removeAuthorFromBook(state, action) {},
    assignPublisher(state, …
Run Code Online (Sandbox Code Playgroud)

redux redux-orm redux-toolkit

5
推荐指数
2
解决办法
929
查看次数