У меня есть массив объектов. Каждый объект имеет два свойства: value, faceup. Массив используется как состояние. Я хочу изменить свойство лицевой стороны, не влияя на свойство значения. Но код, который я написал (handleclick), также перезаписывает свойство value объекта карты. Как предотвратить это?
const Board = (props) =>{
const [cards, setCards]= useState(createCards(props.cardnums));
const handleclick = ()=>{
setCards((preCards)=>preCards.map((card)=> ( card.value===1? card.faceup=true : card.faceup=false) ))
}
function createCards(nums){
var cardlist=[];
for (var i=0; i<nums.length; i++) {
var card = {value:nums[i], faceup:false };
cardlist.push(card)
}
return cardlist
}
return(
<div> board {JSON.stringify(cards)}
<button onClick = {handleclick}>test</button>
<div className= "gridContainer">
{cards.map((card)=> (<div className="gridItem"> {card.value}</div>) )}
</div>
</div>
)
}