등번호 변경 방법에 있어서 지난번에는 제대로 구현하지 못하였다
Setstate를 제대로 작성하지 않아서 생긴 문제였다
PlayerList.map((player) => player.back === Number(NewBack) ? alert('이미 존재하는 등번호 입니다.') :
SetPlayerList(PlayerList.map((player) => player._id === Id ? {...player, back : NewBack} : player))
)
그래서 이렇게 작성했을때는 제대로 되는줄 알았다
근데 등번호가 같아도 alert창이 뜬 뒤에도 숫자가 변경되어 버렸다
코드를 살펴보니 무조건 등번호가 변경되는 로직이 불리도록 코드를 작성한것이다
등번호가 같다면 alert를 한번 부르고 나머지는 다 그 뒤에 Setstate를 할것이다
그렇기 때문에 고민을 했다
그러다가 떠오른 방법이 count를 하는 것이다
지금 우리 팀원의 수가 11명이다
그렇기 때문에 count라는 변수를 만들고 등번호가 겹쳐지지 않을 때 count++를 하도록 했다
그러면 모두와 등번호가 다르다면 count는 11이 될 것이고 if문으로 분기를 하면 되는것이었다
테스트를 해본결과 제대로 작동을 했다
const ChangeBack = () => {
let count = 0
PlayerList.map((player) => player.back === Number(NewBack) ? alert('이미 존재하는 등번호 입니다.') :
count++
)
if(count === 11){
SetPlayerList(PlayerList.map((player) => player._id === Id ? {...player, back : NewBack} : player))
}
}
나중에는 count를 Playerlist.length와 비교하도록 하면된다