首页 > 解决方案 > 如何使这个 switch case 语句不那么冗长?

问题描述

  switch (action.type) {
    case 'FETCH_USER_REQUEST':
    case 'FETCH_USER_SUCCESS':
    case 'FETCH_USER_FAILIURE':
      return { ...state, loading: action.payload.loading, ...action.payload.data };
    case 'UPDATE_USER_REQUEST':
    case 'UPDATE_USER_SUCCESS':
    case 'UPDATE_USER_FAILIURE':
      return { ...state, loading: action.payload.loading, ...action.payload.data };

目前我有一个这样的 switch 语句,你可以看到我不断地调用 REQUEST、SUCCESS、FAILURE。我想要一个函数来创建一个案例,让我检查'FETCH_USER',它会为REQUEST、SUCCESS、FAILURE 创建案例。

我尝试过类似case action.type.includes('FETCH_USER')的方法,但这只会匹配“FETCH_USER_REQUEST”的第一个结果并返回。所以我需要一个函数按顺序排列这三种情况。

标签: javascriptreactjsredux

解决方案


恕我直言,它可以用一个简单的if语句代替:

if (/(FETCH|UPDATE)_USER/.test(action.type))
      return { ...state, loading: action.payload.loading, ...action.payload.data };

推荐阅读