【问题标题】:Placing default value放置默认值
【发布时间】:2021-04-14 17:48:29
【问题描述】:

我遇到了一个问题,希望有人可以帮助我。 我使用用户输入构建计算应用程序。所有字段都不是强制性的。我用

   const [salesIncrease, setSalesIncrease] = useState(0);
   const [priceIncrease, setPriceIncrease] = useState(0);
   const [costsDecrease, setCostsDecrease] = useState(0);

 function handleSalesIncreaseChange(e) {
  setSalesIncrease(parseInt(e.target.value, 10));
 }
function handlePriceIncreaseChange(e) {
 setPriceIncrease(parseInt(e.target.value, 10));
}
function handleCostsDecreaseChange(e) {
 setCostsDecrease(parseInt(e.target.value, 10));
}

我把它作为道具传递给

    <Optimisation 
      salesIncrease={salesIncrease}
      priceIncrease={priceIncrease}
      costsDecrease={costsDecrease}
      onSalesIncrease={handleSalesIncreaseChange}
      onPriceIncrease={handlePriceIncreaseChange}
      onCostsDecrease={handleCostsDecreaseChange}/ 

并将其传递给输入字段,如下所示:

<Input
      className="salesInc"
      value={props.salesIncrease}
      onChange={props.onSalesIncrease}
    />

我在计算中使用这些值,并用表格和图表显示结果。 问题。起初,由于字段不是强制性的,我可以填写其中任何一个,并且效果很好。默认useState = 0。问题是,如果用户添加数字并删除数字后,该字段涉及的所有计算都会给出NaN。因此,通过删除输入,他自动将值设置为 NaN。如果用户在那里键入 0 或任何其他数字,它会再次起作用,但如果他使用该字段一次,他不能将其留空。 问题:如何设置输入最小值 0 的值,不破坏计算,如果用户使用过一次,不强制用户在输入字段中设置 0?

我试过这个功能:

 function handleVolumeInput(salesIncrease) {
  if (isNaN(salesIncrease)) {
  return 0;
 }
 return salesIncrease;}

}

并将此函数传递给 props 值:

  onSalesInput={handleVolumeInput}

  <Input
      className="salesInc"
      value={props.onSalesInput()}
      onChange={props.onSalesIncrease}
      
    />

但这不起作用。一旦从输入中设置数据删除,我仍然会得到 NaN。请问还有什么办法吗?

【问题讨论】:

  • 你试过返回salesIncrease || 0吗?
  • 你如何使用它?当我尝试功能 handleVolumeInput(salesIncrease) { this.salesIncrease = salesIncrease || 0;我收到一个错误“无法分配给对象'#'的只读属性'salesIncrease'

标签: javascript reactjs input


【解决方案1】:

你可以像这样使用数字类型输入:

<input type="number" name="age" id="age" min="1" max="10" step="2">

您可以在 https://developer.mozilla.org/en-US/docs/Learn/Forms/HTML5_input_types#numeric_field 上阅读更多相关信息

【讨论】:

  • 我使用 Chakra UI。我有最小值 不幸的是它没有帮助。
  • 我认为问题在于,所有初始值都被 useState setVolume 高估,即使是 NaN,它也总是通过更新。可能是一个想法,如果存在 NaN,我如何始终返回初始值 0?我试过了,但正如我所说,我的版本没有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2010-09-23
  • 2015-03-13
  • 2016-05-18
相关资源
最近更新 更多