将第 3 方输入道具集成到 Material UI 的 TextField

Integrate 3rd party input props to Material UI's TextField

我正在使用一个名为 react-payment-inputs 的库来接受信用卡号。 该库提供了 input getter 道具,可用于处理信用卡输入。

我可以通过像这样的简单输入来使用 getter 道具方法:<input {...getCardNumberProps()} />.

然而,当对 TextField 做同样的事情时,我从库中得到一个错误: Error: Cannot read property 'match' of undefinedObject.formatCardNumber

这是显示问题的代码。

import React from "react";
import { Grid, TextField } from "@material-ui/core";
import { usePaymentInputs } from "react-payment-inputs";

export default () => {
  const { getCardNumberProps } = usePaymentInputs();

  return (
    <Grid item xs={12}>
      {/* App blows up, see sandbox for demo */}
      <TextField {...getCardNumberProps()} />

      {/* If you uncomment then it shows 2 input boxes but the app doesnt blow up  */}
      {/* <input {...getCardNumberProps()} /> */}

      {/* If you uncomment this, then there is only 1 input box
      but the styling from the library (space after every 4 digits)
      is lost */}
      {/* <input {...getCardNumberProps()} type="hidden" /> */}
    </Grid>
  );
};

这里 sandbox link 显示了这个问题。

图书馆确实 documentation 关于如何与任何第 3 方 UI 图书馆集成。但是,它没有提供 Material UI 示例。 如何将这些外部道具从 TextField 正确转发到内部输入?

我通过使用 TextField 的 inputProps 属性 修复了它,如下所示:

<TextField inputProps={getCardNumberProps({}) />

这是有效的,因为它将 getter 方法发送到包裹在 TextField material 元素中的 input