首页 > 解决方案 > 使用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();
  }

标签: javascriptreact-nativeif-statementprice

解决方案


在对象文字中,您不能使用语句,只能使用表达式。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 €'

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

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

另请注意,您关闭'了模板文字(需要反引号)。


¹ "truthy" 和 "falsy" - JavaScript 隐式转换(或强制)值。当您将值用作测试时,例如在if条件运算符或条件运算符中,JavaScript 会将您提供的值转换为布尔值(truefalse)。转换成的值true称为“真”值,转换成的值false称为“假”。虚假值是NaN, null, undefined, 0, "", 当然false(在浏览器上,document.all由于我在书中解释的各种原因,它也是虚假的)。所有其他值都是真实的。


推荐阅读