gpt4 book ai didi

javascript - 如何在 React 组件中使用一个类的方法?

转载 作者:行者123 更新时间:2023-11-29 20:45:43 25 4
gpt4 key购买 nike

我正在创建一个扑克游戏,我有一个纸牌组类,它具有方法 getDeck、getCard 和 getCards(howMany) 以及一个 Card 组件。我需要在App中使用CardDeck的方法,因为我需要保存牌组的状态,以便在使用52张牌后拼接已经使用过的牌并生成新的牌组。我有一个按钮可以生成新的 5 张牌(一只手),我需要另一个按钮来生成新牌组。

这是我的 app.js

class App extends Component {
constructor() {
super();
this.state = {
display: false,
cards: CardDeck.getCards(5)
}
}
displayDeck = () => {
this.setState({display: true});
}
render() {
return (
<div>
<button className='btn' onClick={this.displayDeck}>Button</button>
{this.state.display ?
<div className="App playingCards fourColours faceImages">
<Card rank={this.state.cards[0].rank} suit={this.state.cards[0].suit} />
<Card rank={this.state.cards[1].rank} suit={this.state.cards[1].suit} />
<Card rank={this.state.cards[2].rank} suit={this.state.cards[2].suit} />
<Card rank={this.state.cards[3].rank} suit={this.state.cards[3].suit} />
<Card rank={this.state.cards[4].rank} suit={this.state.cards[4].suit} />
</div> :
null
}
</div>
);
}
}

这是我的 CardDeck 类:

let getRandomInt = (min, max) => {    
return Math.floor(Math.random() * (max - min + 1)) + min;
}
class CardDeck {
constructor () {
this.deck = this.getDeck();
}
getDeck = () => {
const suits = ['hearts', 'diams', 'clubs', 'spades'];
const ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'j', 'q', 'k', 'a'];
let currentDeck = [];
for (let suit of suits) {
for (let rank of ranks) {
let card = {suit: suit, rank: rank};
currentDeck.push(card);
}
}
return currentDeck;
}
getCard = () => {
let min = 0;
let max = 52;
let card;
while (card === undefined) {
let number = getRandomInt(min, max);
card = this.deck[number];
this.deck.splice(number, 1);
}
return card;
}
getCards = howMany => {
let cardsArray = [];
for (let i=0; i < howMany; i++) {
let card = this.getCard();
cardsArray.push(card);
}
return cardsArray;
}

}

我的卡片组件:

class Card extends Component {
render(props) {
const suits = {
diams: '♦',
hearts: '♥',
clubs: '♣',
spades: '♠'
};
const ranks = {
'q': 'Q',
'j': 'J',
'k': 'K',
'a': 'A',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'10': '10'
}
var classNames = "card " + "rank-" + this.props.rank + " " + this.props.suit;
return (
<div className={classNames}>
<span className="rank">{ranks[this.props.rank]}</span>
<span className="suit">{suits[this.props.suit]}</span>
</div>
);
}
}

提前致谢。

最佳答案

因为你正在使用一个类,你需要获取这个类的实例。

所以替换为下面的代码片段。我希望这能解决问题

//App.js
constructor() {
super();
let carDeck = new CardDeck()
this.state = {
display: false,
cards: carDeck.getCards(5)
}
}

关于javascript - 如何在 React 组件中使用一个类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54642961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com