Так что вы вроде как близко, вы просто не можете использовать такой реквизит.this.props
всегда будет ссылкой на реквизиты компонента, в которых вы находитесь, а не на те реквизиты, откуда была вызвана функция.
Что вы хотите сделать, так это обновить функции handleGold / handleUpgrades, чтобы получить аргумент, который будетбудь ценовой реквизит, который вы передаете, как:
<Upgrade price = {5} handleGold = {(price) => this.handleUpgrades(price)}/>
&
handleUpgrades(price) {
let newGold = this.state.gold - price;
let newPower = this.state.power++;
if ( this.state.gold >= price) {
this.setState({
gold : newGold,
power : newPower,
});
}
}
и, наконец, в вашем компоненте Upgrade просто передайте цену из реквизита в этотфункция:
<button onClick = {() => this.props.handleGold(this.props.price)}>