javascript - 使用if-loop根据js中的输入计算价格
问题描述
我对 Javascript 和 React 还很陌生,所以请多多包涵。我的应用程序中有一个组件,它需要用户的时间跨度,但现在我想计算用户必须支付的价格,具体取决于他们的输入。我认为这可能是使用 if 循环的最简单方法,但有些东西很不合适,我有点卡住了。
我的尝试总体上是否可以,还是需要一个单独的函数,我必须调用它才能执行我想做的事情?
onConfirm(hour, minute) {
this.setState({ time: `Dauer: ${hour}:${minute}` });
this.setState(if((hour) < 4){return price = `Preis: (${hour}* 1.5) €`;}
else {return price= 'Preis: 5.50 €';} );
this.TimePicker.close();
}
解决方案
在对象文字中,您不能使用语句,只能使用表达式。if
是一个声明。
如果您想在表达式中执行此操作或/或逻辑,请使用条件运算符( ? :
),如下所示:
onConfirm(hour, minute) {
this.setState({
time: `Dauer: ${hour}:${minute}`,
price: hour < 4 ? `Preis: (${hour}* 1.5) €` : 'Preis: 5.50 €'
});
this.TimePicker.close();
}
上面的条件运算符表达式为:
hour < 4 ? `Preis: (${hour}* 1.5) €` : 'Preis: 5.50 €'
它是一个三元运算符(接受三个操作数的运算符):
- 测试条件 (
hour < 4
) - 判断条件是否为真的表达式¹ (
`Preis: (${hour}* 1.5) €`
) - 如果条件为假,则要评估的表达式¹ (
'Preis: 5.50 €'
)
另请注意,您关闭'
了模板文字(需要反引号)。
¹ "truthy" 和 "falsy" - JavaScript 隐式转换(或强制)值。当您将值用作测试时,例如在if
条件运算符或条件运算符中,JavaScript 会将您提供的值转换为布尔值(true
或false
)。转换成的值true
称为“真”值,转换成的值false
称为“假”。虚假值是NaN
, null
, undefined
, 0
, ""
, 当然false
(在浏览器上,document.all
由于我在书中解释的各种原因,它也是虚假的)。所有其他值都是真实的。
推荐阅读
- javascript - 停止中继:查询渲染器为某些 setStates 重新加载数据
- sql - 有没有办法以类似于忽略匹配顺序的方式表达 AND?
- r - 使用 grepl 匹配某些单词,但仅限于不能出现其他单词的特定上下文中
- ansible - Ansible 丢失可变内容
- android - 如何在代码中而不是在清单中设置应用程序主题
- ios - 在特定 ViewController 上强制 RTL 方向
- solr - Solr 7.2 建议者 contextField 过滤器没有返回结果
- c# - 关于 DotNetBrowser 中的 Cookie
- sql - 如何在 Oracle 中将当前日期设置为别名
- azure-devops - 是否可以将 ADFS 与现有 AAD 一起使用以允许访问 Azure DevOps?