Uncaught TypeError: path.Split不是react中的一个函数



我想知道如何用新的编码方式解决这个问题。我看到有人说这个错误是由于react-hook-form的更新,但我不知道如何解决这个问题。如果有人知道这个,我将不胜感激。

我最初试图通过添加"…"来解决这个问题。在注册之前,不要使用"ref="。我还尝试了不同的"name="email""正如下面类似问题的答案;然而,我仍然得到这个错误。

Getting Uncaught TypeError: path。Split不是react

中的函数我的错误提示:"未捕获的类型错误:路径。Split不是函数"我正在使用"react-hook-form"; "react-hook-form"; "^7.33.1"

import React from 'react';
import { useForm } from 'react-hook-form';
const EMAIL_PATTERN = /^(([^<>()\[]\.,;:s@"]+(.[^<>()\[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
const LoginForm = ({onSubmit}) => {
const { register, handleSubmit, errors } = useForm();
return (
<form onSubmit={handleSubmit(onSubmit)}>
<div className="form-group">
<label htmlFor="email">Email</label>
<input
{...register({required: true, pattern: EMAIL_PATTERN})}
name="email"
type="email"
className="form-control"
id="email" />
{ errors.email &&
<div className="alert alert-danger"> 
{ errors.email.type === 'required' &&
<span>Email is required!</span>
}
{ errors.email.type === 'pattern' &&
<span>Not valid email format!</span>
}
</div>
}
</div>

正如React Hook Form文档(https://react-hook-form.com/api/useform/register)中所写的那样,你应该在注册选项之前提供输入的名称或id。目前你只提供注册选项,所以它会给你一个错误消息,因为它试图注册无效的名称或id。

register: (name: string, RegisterOptions?) => ({ onChange, onBlur, name, ref })

在你的情况下,它应该是如下。

<input {...register("email", {required: true, pattern: EMAIL_PATTERN})}
name="email"
type="email"
className="form-control"
id="email" />

在我这边,错误是由我正在调度的函数的名称引起的。

函数被称为"register"使用以下代码

dispatch(register(data))

将函数重命名为"registerUser"后,它可以工作了

dispatch(registerUser(data))