javascript - 如何在 react-phone-number-input 中使用 material-ui TextField

标签 javascript html reactjs material-ui

我想从 react-phone-number-input 向 PhoneInput 组件提供一个 Material UI TextField 组件作为 inputComponent支柱。

但是,我似乎无法成功应用 ref。虽然我看到 Material UI TextField 组件呈现到 UI 并且状态已成功更新为该值,但在键入第一个值后它一直失去焦点。

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} />
   );
  };

最佳答案

所以我能够使用以下方法让它工作。任何关于如何改进这一点的建议都非常受欢迎。

我有一个名为 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}
/>
...

关于javascript - 如何在 react-phone-number-input 中使用 material-ui TextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60909788/

相关文章:

javascript - 小 slider 点击监听器注册太晚

javascript - 查找嵌套的 div 标签

javascript - 使用 Text 增加文本框大小

javascript - 发送带有可选参数的表单 POST 方法 + angularJS

javascript - jQuery .animate 命令问题

javascript - 如何为多个导入的模块使用单个命名空间?

javascript - 如何使 Bootstrap 下拉菜单在悬停时起作用

iphone - 如何从网站的Apple Touch图标中删除圆角

reactjs - 为什么自定义钩子(Hook)返回结果两次

javascript - 使用reactjs,更新列表中的项目而不更新整个列表?