使用if循环根据js中的输入计算价格

Use if-loop to calculate price depending on the input in 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 是一个语句。

如果要在表达式中执行 either/or 逻辑,请使用 条件运算符 (? :),如下所示:

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 €'

这是一个三元运算符(接受三个操作数的运算符):

  1. 要测试的条件(hour < 4)
  2. 用于评估条件是否为真的表达式¹ (`Preis: (${hour}* 1.5) €`)
  3. 判断条件是否为假的表达式¹ ('Preis: 5.50 €')

另请注意,您在模板文字上有一个结束 '(需要反引号)。


¹ "truthy" 和 "falsy" - JavaScript 隐式转换(或强制)值。当您将值用作测试时,例如在 if 或条件运算符中,JavaScript 会将您提供的值转换为布尔值(truefalse) .转换为 true 的值称为 "truthy" 值,转换为 false 的值称为 "falsy." 伪值是 NaNnullundefined0"",当然还有 false(在浏览器上,document.all 也是假的,原因有很多,我在书中解释过)。所有其他值都是真实的。