数字格式的错误行为

wrong behaviour of number format

所以我正在使用 NumberFormat 库来构建占位符,但它无法按照我希望的方式工作,而且我也找不到原因。输入字段的行为很奇怪。本应充当占位符的“$0”充当字符,因此如果用户键入“120”,金额实际上将是“1200”。

这里有一段视频展示了它是如何工作的:https://media.giphy.com/media/sptBQiYqQr3B54rJFu/giphy.gif

但是正确的行为是,当有 0 并且用户输入一个值时,应该替换 0(您可以检查 google 计算器,它会这样做)。

<NumberFormat
                defaultValue={undefined}
                value={payoutInputValue}
                displayType="input"
                thousandSeparator
                decimalScale={2}
                prefix={getCurrencySymbol(currency)}
                allowLeadingZeros={false}
                allowNegative={false}
                getInputRef={numberInputRef}
                onValueChange={(values) =>
                  setPayoutInputValue(values?.floatValue || undefined)
                }
                disabled={disabled || isLoading}
                isAllowed={isDrawAmountAllowed(0, currency)}
                required
              />

和 setPayoutInputValue 函数:

const [payoutInputValue, setPayoutInputValue] = useState<number>(
    payout === 0 && isAmountParamValid ? amountParamParsed : payout
  );

我对 React 的经验不多,所以如果你能用基本术语回答,那就太棒了。谢谢!

编辑:设法让它发挥作用!添加了占位符属性和 value={undefined}

尝试为 NumberFormat 设置 hintText 属性,同时给出初始值 undefined

<NumberFormat
  hintText="Some placeholder"
  value={this.state.card}
  customInput={TextField}
  format="#### #### #### ####"
/>