【发布时间】:2021-06-20 08:39:53
【问题描述】:
我是 React 新手,正在尝试创建一个简单的纸牌游戏。当一张卡片被点击时,它应该被选中并分配一个类名“selectedCard”。因此,当它重新渲染时,选定的卡片将被抬起。但是,选中的卡片并没有在点击时抬起,我的猜测是它没有重新渲染。
这是我的代码 sn-p:
Player.js:
const Player = (props) =>{
const [selectedCards, setSelectCard] = useState([]);
const selectCard = (card) => {
let newSelectedCards = selectedCards
if(newSelectedCards.includes(card) ) {
newSelectedCards.splice(newSelectedCards.indexOf(card), 1)
} else {
newSelectedCards.push(card)
}
setSelectCard(newSelectedCards)
console.log('changed');
}
return(
<div className="player-container">
{props.cards && props.cards.map((card, i) => {
let selected = selectedCards.includes(card)
return(<Card key={i} card={card} user="player" selectCard={selectCard} selected={selected}/>)
}
)}
)
}
卡片.js
const Card = (props) =>{
const path = props.card.imagePath
const [selected, setSelected] = useState(props.selected)
useEffect(() => { setSelected(props.selected) }, [props.selected]);
{/*My effort to make it work*/}
const classname = (selected) ? "selectedcard" : ""
return(
<img onClick={() => props.selectCard(props.card)} className={"card " + classname} alt = "card-image" src={images[path]}/>)
}
css
.selectedcard{
margin-bottom: 40px;
border-radius: 6px;
box-shadow: 0px 0px 5px #fff !important;
}
【问题讨论】:
标签: javascript html css reactjs