使用 Setstate 重新渲染,记录两次,正面和反面计数器在每次点击时增加 +2 而不是 +1
class CoinFlip extends Component {
constructor(props) {
super(props);
this.state = {
currFace: 'heads',
flips: 0,
counter: {
heads: 0,
tails: 0,
},
};
this.flipCoin = this.flipCoin.bind(this);
}
flipCoin() {
let num = Math.round(Math.random());
let face = num === 0 ? 'heads' : 'tails';
this.setState((st) => {
const copy = { ...st };
copy.flips++;
copy.counter[face]++;
copy.currFace = face;
return copy;
});
}
render() {
return (
<div>
<h1>Lets flip a coin</h1>
<Coin face={this.state.currFace} />
<p>
Out of {this.state.flips}, there have been {this.state.counter.heads}{' '}
heads and {this.state.counter.tails} tail
</p>
<button onClick={this.flipCoin}>Flip!</button>
</div>
);
}
}
记录时有 2 个带有双面值的复制 obj 结果
2x 控制台:计数器:{heads:2,tails:0} currFace:“heads”翻转:1
心有法竹
回首忆惘然
随时随地看视频慕课网APP
相关分类