如何将Material-UI TextField与react-phone-number-input一起使用

时间:2020-03-29 03:21:43

标签: javascript html reactjs material-ui

我想从react-phone-number-input作为inputComponent道具向PhoneInput组件提供一个实质性的UI TextField组件。

但是,我似乎无法成功应用裁判。尽管我看到了渲染到UI的Material UI TextField组件,并且状态已成功更新为该值,但是在键入第一个值后,它始终失去焦点。

import React, { forwardRef, createRef } from 'react';
import { TextField } from '@material-ui/core';
import 'react-phone-number-input/style.css';
import PhoneInput from 'react-phone-number-input';

const SampleComponent = ({ handleChange }) => {

const phoneInput = forwardRef((props, ref) => {

return (
  <TextField
    inputRef={ref}
    fullWidth
    label="Phone Number"
    variant="outlined"
    name="phone"
    onChange={handleChange}
  />
  );
});

const ref = createRef();
return (
    <PhoneInput ref={ref} inputComponent={phoneInput} />
   );
  };

1 个答案:

答案 0 :(得分:5)

因此,我可以使用以下方法使其正常工作。任何有关如何改善此问题的建议都将受到欢迎。

我有一个名为PhoneNumber.jsx

的单独文件
import { forwardRef } from 'react'
import TextField from '@material-ui/core/TextField'
import { makeStyles } from '@material-ui/core/styles'

const useStyles = makeStyles(theme => ({
  input: {
    backgroundColor: '#fff'
  }
}))

const phoneInput = (props, ref) => {
  const classes = useStyles()

  return (

    <TextField
      {...props}
      InputProps={{
        className: classes.input
      }}
      inputRef={ref}
      fullWidth
      size='small'
      label='Phone Number'
      variant='outlined'
      name='phone'
    />
  )
}
export default forwardRef(phoneInput)

还有我的表单文件:

import PhoneInput from 'react-phone-number-input'
import CustomPhoneNumber from '../components/prebuilt/PhoneNumber'
...
<PhoneInput
   placeholder='Enter phone number'
   value={phone}
   onChange={setPhone}
   inputComponent={CustomPhoneNumber}
/>
...