如何使用Redux Toolkit来运行同一代码的多个案例?

a

我正在将一些较旧的Redux代码转换为使用新的Redux Toolkit。我遇到了一个问题,在旧代码中,多个case语句将触发相同的reducer逻辑。新的Case Reducer功能如何做到这一点?

在旧代码中,REGISTER_FAIL,AUHT_ERROR,LOGIN_FAIL,LOGOUT都运行相同的代码。createSlice reducers对象中是否可能有相同类型的场景?

旧密码

    case REGISTER_FAIL:
    case AUTH_ERROR:
    case LOGIN_FAIL:
    case LOGOUT:
      localStorage.removeItem('token');
      return {
        ...state,
        token: null,
        isAuthenticated: false,
        loading: false,
        user: null,
      };
    default:
      return state;

新密码

const authUserSlice = createSlice({
  name: 'authUser',
  initialState,
  reducers: {
    registerFail(state, action) {
      return {
        ...state,
        token: null,
        isAuthenticated: false,
        loading: false,
        user: null,
      };
    },
    registerSuccess
  },
});
标记物

有两种不同的选择。

首先,您可以分别编写case reducer函数,然后将它们传递createSlice多次以为每个字段名称生成相应的操作:

function resetState() {
  Object.assign(state, {
    token: null,
    // etc
  });
}

const authUserSlice = createSlice({
  name: 'authUser',
  initialState,
  reducers: {
    registerFailed: resetState,
    logout: resetState,
    // etc
  }
});

另一种选择是使用该extraReducers字段,并使用builder.addMatcher()同一reduce来处理多种情况:

const authUserSlice = createSlice({
  name: 'authUser',
  initialState,
  reducers: {
    // omit
  },
  extraReducers: builder => {
    builder.addMatcher(
      isAnyOf(REGISTER_FAIL, AUTH_ERROR, LOGIN_FAIL, LOGOUT),
      (state, action) => {
        // reset state here
      }
    )

  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用目标使用同一代码库启动多个应用程序?

来自分类Dev

使用Notepad ++查找文件以查找同一代码的多个实例

来自分类Dev

在同一代码中使用不同的工作簿

来自分类Dev

为什么不能在同一代码中使用函数“ pack”和“ grid”

来自分类Dev

简化多次使用同一代码的lambda表达式

来自分类Dev

在同一代码中使用不同的工作簿

来自分类Dev

VBScript 在同一代码中使用两个 For Next

来自分类Dev

如何在MATLAB中一次使用同一代码中的两个数据集?

来自分类Dev

如何使用Rmarkdown / Knitr从同一代码行返回紧凑的head()和tail()结果?

来自分类Dev

如何使用Rmarkdown / Knitr从同一代码行返回紧凑的head()和tail()结果?

来自分类Dev

有没有办法在HTML中多次使用同一代码(代码可重用性)?

来自分类Dev

使用%matplotlib笔记本时,Graph和ipywidget不能在同一代码单元中

来自分类Dev

使用%matplotlib笔记本时,Graph和ipywidget不能在同一代码单元中

来自分类Dev

Rspec,同一代码上的多个断言

来自分类Dev

如何在同一代码库/ package.json中包含Mocha和Karma测试(服务器端和客户端)?

来自分类Dev

如何异步运行同一类的多个实例?

来自分类Dev

使用Java与使用jdk11的javac执行单一代码Java文件

来自分类Dev

如何通过唯一代码对对象数组进行分组?

来自分类Dev

如何删除文件中的唯一代码标识符

来自分类Dev

如何在表单字段输入中生成简短的唯一代码号?

来自分类Dev

使用元素树为嵌套XML创建唯一代码

来自分类Dev

使用php获取计算机名称或任何唯一代码

来自分类Dev

在选择菜单上使用统一代码

来自分类Dev

使用多个案例是 <>

来自分类Dev

如何在Redux Toolkit的createSlice中使用Redux-Thunk?

来自分类Dev

如何使用Redux-Toolkit重置Redux Store

来自分类Dev

如何在Java中使用多个不同的输入文件自动运行同一类

来自分类Dev

如何使用MSM Boost库运行同一子状态机的多个实例

来自分类Dev

从R的每一行中的唯一代码中提取某些字母,仅使用tidyverse

Related 相关文章

  1. 1

    如何使用目标使用同一代码库启动多个应用程序?

  2. 2

    使用Notepad ++查找文件以查找同一代码的多个实例

  3. 3

    在同一代码中使用不同的工作簿

  4. 4

    为什么不能在同一代码中使用函数“ pack”和“ grid”

  5. 5

    简化多次使用同一代码的lambda表达式

  6. 6

    在同一代码中使用不同的工作簿

  7. 7

    VBScript 在同一代码中使用两个 For Next

  8. 8

    如何在MATLAB中一次使用同一代码中的两个数据集?

  9. 9

    如何使用Rmarkdown / Knitr从同一代码行返回紧凑的head()和tail()结果?

  10. 10

    如何使用Rmarkdown / Knitr从同一代码行返回紧凑的head()和tail()结果?

  11. 11

    有没有办法在HTML中多次使用同一代码(代码可重用性)?

  12. 12

    使用%matplotlib笔记本时,Graph和ipywidget不能在同一代码单元中

  13. 13

    使用%matplotlib笔记本时,Graph和ipywidget不能在同一代码单元中

  14. 14

    Rspec,同一代码上的多个断言

  15. 15

    如何在同一代码库/ package.json中包含Mocha和Karma测试(服务器端和客户端)?

  16. 16

    如何异步运行同一类的多个实例?

  17. 17

    使用Java与使用jdk11的javac执行单一代码Java文件

  18. 18

    如何通过唯一代码对对象数组进行分组?

  19. 19

    如何删除文件中的唯一代码标识符

  20. 20

    如何在表单字段输入中生成简短的唯一代码号?

  21. 21

    使用元素树为嵌套XML创建唯一代码

  22. 22

    使用php获取计算机名称或任何唯一代码

  23. 23

    在选择菜单上使用统一代码

  24. 24

    使用多个案例是 <>

  25. 25

    如何在Redux Toolkit的createSlice中使用Redux-Thunk?

  26. 26

    如何使用Redux-Toolkit重置Redux Store

  27. 27

    如何在Java中使用多个不同的输入文件自动运行同一类

  28. 28

    如何使用MSM Boost库运行同一子状态机的多个实例

  29. 29

    从R的每一行中的唯一代码中提取某些字母,仅使用tidyverse

热门标签

归档