Чтобы создать повторно используемую библиотеку форм в React, вы можете выполнить следующие шаги:
- Создайте новый пакет npm, используя
npm init
илиyarn init
, и дайте ему описательное имя. - Установите необходимые зависимости, такие как React и библиотеку проверки формы по вашему выбору (например,
formik
илиreact-hook-form
). - Разработайте структуру компонентов формы. Вы можете создать компонент базовой формы, который обрабатывает общий макет и логику проверки, а затем создать определенные поля формы (например, текстовые поля ввода, флажки и т. д.), которые можно скомпоновать в компоненте базовой формы.
- Напишите код для своих компонентов формы, обязательно следуя передовым методам проектирования повторно используемых компонентов, таких как использование правильных типов реквизита и предоставление разумных реквизитов по умолчанию.
- Тщательно протестируйте библиотеку форм, чтобы убедиться, что она работает должным образом.
- Опубликуйте свою библиотеку форм в npm или в закрытом реестре пакетов, чтобы ее можно было легко установить и использовать в других проектах.
Вот пример базового повторно используемого компонента формы в React:
import React from 'react'; import { useForm } from 'react-hook-form'; const MyForm = ({ onSubmit }) => { const { handleSubmit, register, errors } = useForm(); return ( <form onSubmit={handleSubmit(onSubmit)}> <input name="name" ref={register({ required: true })} /> {errors.name && 'Name is required'} <input type="submit" /> </form> ); }; export default MyForm;
Этот компонент формы использует библиотеку react-hook-form
для проверки и отправки формы. Он включает поле ввода для имени пользователя, которое помечено как обязательное с использованием правила проверки required
. Если пользователь попытается отправить форму без ввода имени, появится сообщение об ошибке.
Затем вы можете использовать этот компонент формы в другом проекте, установив его из npm и импортировав:
import MyForm from 'my-form-library'; const App = () => { const onSubmit = data => { console.log(data); }; return <MyForm onSubmit={onSubmit} />; };
Надеюсь, это поможет! Дайте мне знать, если у вас есть какие-либо вопросы или вам нужны дополнительные разъяснения.