#reactjs #next.js #react-hook-form
#reactjs #next.js #react-hook-form
Вопрос:
Я пытаюсь использовать пакет формы React Hook в своей форме для проверки и получил эту ошибку при обновлении страницы. Идея состоит в том, чтобы собрать входные данные формы, проверить их перед отправкой на сервер. Однако я не могу выйти за рамки этого сообщения об ошибке и не знаю, с чего начать его исправление. Можете ли вы знать, как это исправить, если да — пожалуйста, помогите указать мне правильное направление, как это исправить?
Мое поле формы
import React, { useEffect } from 'react';
import { useForm } from 'react-hook-form';
const login = () => {
const {register, handleSubmit} = useForm();
return (
<div>
<div className="min-h-screen bg-gray-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8 bg-gradient-to-r from-gray-700 via-gray-800 to-gray-900">
<div className="sm:mx-auto sm:w-full sm:max-w-md">
<h2 className="mt-6 text-center text-3xl font-extrabold text-white">
Sign in to your account
</h2>
<p className="mt-2 text-center text-sm text-gray-600 max-w">
Or amp;nbsp;
<a href="/register" className="font-medium text-indigo-600 hover:text-indigo-500">
Register for an account
</a>
</p>
</div>
<div className="mt-8 sm:mx-auto sm:w-full sm:max-w-md">
<div className="bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10">
{/* Form */}
<form className="space-y-6" action="/login" method="POST" onSubmit={handleSubmit((data)=>{
alert(JSON.stringify(data))
})}>
<div>
<label htmlFor="email" className="block text-sm font-medium text-gray-700">
Email address
</label>
<div className="mt-1">
<input ref={register} id="email" name="email" type="email" autoComplete="email" required className="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" />
</div>
</div>
<div>
<label htmlFor="password" className="block text-sm font-medium text-gray-700">
Password
</label>
<div className="mt-1">
<input ref={register} id="password" name="password" type="password" autoComplete="current-password" required className="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm" />
</div>
</div>
<div className="flex items-center justify-between">
<div className="flex items-center">
<input ref={register} id="remember_me" name="remember_me" type="checkbox" className="h-4 w-4 text-indigo-600 focus:ring-indigo-500 border-gray-300 rounded" />
<label htmlFor="remember_me" className="ml-2 block text-sm text-gray-900">
Remember me
</label>
</div>
<div className="text-sm">
<a href="#" className="font-medium text-indigo-600 hover:text-indigo-500">
Forgot your password?
</a>
</div>
</div>
<div>
<button type="submit" className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
Sign in
</button>
</div>
</form>
<div className="mt-6">
<div className="relative">
<div className="absolute inset-0 flex items-center">
<div className="w-full border-t border-gray-300" />
</div>
<div className="relative flex justify-center text-sm">
<span className="px-2 bg-white text-gray-500">
Or continue with
</span>
</div>
</div>
<div className="mt-6 grid grid-cols-2 gap-3">
<div>
<a href="#" className="w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
<span className="sr-only">Sign in with Google</span>
<img className="g-tile" src="/google-tile.png" />
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
)
}
Ошибка
Необработанная ошибка времени выполнения TypeError: path.split не является функцией
Стек вызовов
get
node_modules/react-hook-form/dist/index.esm.js (28:0)
eval
node_modules/react-hook-form/dist/index.esm.js (1426:0)
commitAttachRef
node_modules/react-dom/cjs/react-dom.development.js (20023:0)
commitLayoutEffects
node_modules/react-dom/cjs/react-dom.development.js (22808:0)
HTMLUnknownElement.callCallback
node_modules/react-dom/cjs/react-dom.development.js (188:0)
Object.invokeGuardedCallbackDev
node_modules/react-dom/cjs/react-dom.development.js (237:0)
invokeGuardedCallback
node_modules/react-dom/cjs/react-dom.development.js (292:0)
commitRootImpl
node_modules/react-dom/cjs/react-dom.development.js (22541:0)
unstable_runWithPriority
node_modules/scheduler/cjs/scheduler.development.js (653:0)
runWithPriority$1
node_modules/react-dom/cjs/react-dom.development.js (11039:0)
commitRoot
node_modules/react-dom/cjs/react-dom.development.js (22381:0)
finishSyncRender
node_modules/react-dom/cjs/react-dom.development.js (21807:0)
performSyncWorkOnRoot
node_modules/react-dom/cjs/react-dom.development.js (21793:0)
scheduleUpdateOnFiber
node_modules/react-dom/cjs/react-dom.development.js (21188:0)
updateContainer
node_modules/react-dom/cjs/react-dom.development.js (24373:0)
eval
node_modules/react-dom/cjs/react-dom.development.js (24758:0)
unbatchedUpdates
node_modules/react-dom/cjs/react-dom.development.js (21903:0)
legacyRenderSubtreeIntoContainer
node_modules/react-dom/cjs/react-dom.development.js (24757:0)
Object.hydrate
node_modules/react-dom/cjs/react-dom.development.js (24823:0)
renderReactElement
node_modules/next/dist/client/index.js (530:6)
doRender
node_modules/next/dist/client/index.js (799:2)
_callee2$
node_modules/next/dist/client/index.js (425:10)
tryCatch
node_modules/regenerator-runtime/runtime.js (63:14)
Generator.invoke [as _invoke]
node_modules/regenerator-runtime/runtime.js (293:0)
Generator.eval [as next]
node_modules/regenerator-runtime/runtime.js (118:0)
asyncGeneratorStep
node_modules/@babel/runtime/helpers/asyncToGenerator.js (3:0)
_next
node_modules/@babel/runtime/helpers/asyncToGenerator.js (25:0)
eval
node_modules/@babel/runtime/helpers/asyncToGenerator.js (32:0)
new Promise
<anonymous>
eval
node_modules/@babel/runtime/helpers/asyncToGenerator.js (21:0)
_render
webpack-internal:///./node_modules/next/dist/client/index.js (522:18)
render
webpack-internal:///./node_modules/next/dist/client/index.js (459:18)
eval
node_modules/next/dist/client/next-dev.js (85:6)
eval
node_modules/next/dist/client/dev/fouc.js (14:6)
Ответ №1:
Я думаю, причина, по которой у вас возникает эта ошибка, заключается в том, что вы используете другой тип syntex. Какую версию react forms вы используете? потому что есть большая вероятность, что вы используете v6 syntex на более новой версии 7 или наоборот.
Вероятно, это связано с тем, как вы передаете ссылку для register, вот пример из документации о том, как его использовать:
<input
{...register("fieldname", {
maxLength: 2
})}
/>