reactjs - React 将组件的 props 作为函数变量传递
问题描述
我正在尝试制作一个答题器游戏,但我对它的了解并不多,但是我对 React 有一些不理解的地方。
我已经制作了一个可以工作的点击按钮,并且我正在尝试制作一个升级按钮,但问题是它增加了点击的力量,但它不会从玩家身上带走任何金币。
我怎样才能使它减去点击成本?
解决方案
所以你有点接近,你不能使用这样的道具。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,
});
}
}
最后,在您的升级组件中,只需将价格从道具传递到该函数:
<button onClick = {() => this.props.handleGold(this.props.price)}>
推荐阅读
- api - How to allow access to subset of API only when connected via my official frontend, using Nest.js?
- serial-port - 使用“define _GNU_SOURCE”时的 printf 替代方案
- javascript - 如何在 JS 中最小化函数内的重复代码
- oauth-2.0 - 哪种授权类型:隐式或授权码(无密钥)适用于单页应用程序(SPA)?
- python - 我怎样才能从无开始找到最大值,最小值?
- python - 值错误:导入 pandas 和 plotly 时 PyPy 的参数无效
- java - 本地运行的 DynamoDb 的默认预置吞吐量(读取和写入容量单位)是多少?
- c# - 无法使用 TabStops 使 ListBox 中的项目正确对齐
- android - 具有多种视图类型、kotlin 和 sqlite 的回收器视图
- c# - 如何在 ASP.NET 中使用 C# 在超时后将用户重定向到登录页面?