javascript - 切换数组中的项目 react

标签 javascript arrays reactjs ecmascript-6

我想切换数组中对象的属性。该数组如下所示。这是在 react 组件中使用的,当用户单击按钮时,我想切换获胜者。

const initialFixtures = [{
    teams: {
      home: 'Liverpool',
      away: 'Manchester Utd'
    },
    winner: 'Liverpool'
  },
  {
    teams: {
      home: 'Chelsea',
      away: 'Fulham'
    },
    winner: 'Fulham'
  }, ,
  {
    teams: {
      home: 'Arsenal',
      away: 'Tottenham'
    },
    winner: 'Arsenal'
  }
];

我的 react 代码看起来像这样

function Parent = () => {

  const [fixtures, setUpdateFixtures] = useState(initialFixtures)
  const toggleWinner = (index) => {
     const updatedFixtures = fixtures.map((fixture, i) => {
           if (i === index) {
                return {
                    ...fixture,
                    winner: fixture.winner === home ? away : home,
                };
            } else {
                return fixture;
            }
     }) 
     setUpdateFixtures(updatedFixtures);
  }

  return <Fixtures fixtures={fixtures} toggleWinner={toggleWinner} />;

}


function Fixtures = ({ fixtures, toggleWinner }) => { 
  fixtures.map((fixture, index) => ( 
    <div>
        <p>{fixture.winner} </p>
    <button onClick = {() => toggleWinner(index)}> Change Winner</button> 
    </div>
  ))
}

代码可以工作,但感觉有点太多了。我确信有更好更简洁的方法来做到这一点。有人可以建议吗?出于架构原因,我确实需要从 Fixture 组件的父级传递固定装置。

最佳答案

const updatedFixtures = [...fixtures];
const fixture = updatedFixtures[i];
updatedFixtures[i] = {
  ...fixture,
  winner: fixture.winner === fixture.teams.home ? fixture.teams.away : fixture.teams.home,
};

关于javascript - 切换数组中的项目 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54324315/

相关文章:

arrays - TCL:如何返回数组?

reactjs - 如何在 JEST 中模拟 $.ajax 调用

javascript - 制作可变键和深度的嵌套对象的最佳方法是什么?

javascript - 我的 javascript 在复选框检查中有一些错误

c++ - 沿对角线编程 0

reactjs - ReactJS 中的函数组件和返回语句

node.js - 如何使用 "Blank Node.js"模板在 Visual Studio 2019 中调试 React 应用程序

php - 使用原生 javascript 发送 json

javascript - socket.io 向每个客户端发出/广播

c++ - 将字节数组转换为位图图像