类型错误:无法定义属性“当前”:对象不可扩展

Ism*_*dni 12 javascript reactjs react-hooks react-hook-form

我有一个反应组件InputField

export default function InputField({ name, type, placeholder, className }, ref) {
  return (
    <input
      name={name}
      type={type}
      placeholder={placeholder}
      className={InputTailwindStyle}
      ref={ref}
    />
  );
}
Run Code Online (Sandbox Code Playgroud)

我尝试将其放入另一个组件LoginForm中,其中我使用react-hook-form来处理我的表单挂钩:

import { useForm } from 'react-hook-form';

(some code ... )

const { register, handleSubmit } = useForm();

<InputField
        name='password'
        type='password'
        placeholder='Password'
        ref={register}
/>
Run Code Online (Sandbox Code Playgroud)

但我收到此错误: TypeError: 无法定义属性“current”: 对象不可扩展

Den*_*ash 17

您需要使用React.forwardRef属性ref才能在功能组件中有效:

function InputField({ name, type, placeholder, className }, ref) {
  return (
    <input
      name={name}
      type={type}
      placeholder={placeholder}
      className={`py-2 text-cTxt placeholder-gray-400 bg-transparent border-b-2 my-5 border-cBtn rounded px-2 ${className}`}
      ref={ref}
    />
  );
}

export default React.forwardRef(InputField);
Run Code Online (Sandbox Code Playgroud)

  • 您必须使用“props”参数,否则它将无法工作。 (2认同)