相关疑难解决方法(0)

用 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
查看次数

标签 统计

redux ×1

redux-orm ×1

redux-toolkit ×1