
Чтобы создать повторно используемую библиотеку форм в 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} />;
};
Надеюсь, это поможет! Дайте мне знать, если у вас есть какие-либо вопросы или вам нужны дополнительные разъяснения.