代码之家  ›  专栏  ›  技术社区  ›  The Walrus

从减速机返回2件东西

  •  0
  • The Walrus  · 技术社区  · 7 年前

    我正在创建一个足球联赛表格,用户可以在其中输入2支球队的结果,然后更新表格。我让它工作,但它开始变得混乱,因为我发射了太多的行动。

    我有这个行动案例:

    case 'UPDATE_WINNER': {
      const result = workOutWinner(action.data.homeTeam, action.data.awayTeam)
      return state.map(team => team.name === result.winners.name
        ?
        { ...team,
          won: team.won + 1,
          points: team.points + 3,
          goalsScored: team.goalsScored + result.winners.goals,
          goalsAgainst: team.goalsAgainst + result.losers.goals
        }
        : team )
    }
    

    还有这个:

       case 'UPDATE_LOSER': {
          const result = workOutWinner(action.data.homeTeam, action.data.awayTeam)
          return state.map(team => team.name === result.losers.name
            ?
            { ...team,
              lost: team.lost + 1,
              goalsScored: team.goalsScored + result.losers.goals,
              goalsAgainst: team.goalsAgainst+ result.winners.goals
            }
            : team )
        }
    

    我需要另一个用于球队打平等。我还遇到了一个问题,每次我都会摔倒。i、 e(如果团队获胜,我不需要调用UPDATE\u IF\u DRAW操作),但当前的方法在调用操作后会起作用。

    我想知道是否有人可以帮我写一个案例,让我可以做一些像UPDATE\u TABLE这样的事情。

    我开始写这篇文章,但当我意识到以下几点时,我就开始胡思乱想了,

    团队A击败团队B)需要更新表格的两个部分。i、 e.一胜一负

    这就是为什么我想返回2件事,因为我想映射我的状态,找到获胜的球队并更新他们的状态,映射失败的球队并更新他们的状态。

    有什么想法吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Shubham Khatri    7 年前

    您可以使用map函数中的条件检查来更新这两个函数,如

    case 'UPDATE_TABLE': {
          const result = workOutWinner(action.data.homeTeam, action.data.awayTeam)
          return state.map(team => team.name === result.losers.name
            ?
            { ...team,
              lost: team.lost + 1,
              goalsScored: team.goalsScored + result.losers.goals,
              goalsAgainst: team.goalsAgainst+ result.winners.goals
            }
            : team.name === result.winners.name ? 
              { ...team,
                won: team.won + 1,
                points: team.points + 3,
                goalsScored: team.goalsScored + result.winners.goals,
                goalsAgainst: team.goalsAgainst + result.losers.goals
              } : team )
        }