@iordania

Как подойти к реализации данного модуля?

Всем привет! С недавнего времени новичок в js и есть вопросы. Предположим мне нужно реализовать форму регистрации.
Есть 4 поля (user_name, email, password и confirmPassword).
Так же есть состояние у формы и полей(для валидации).
1. Создаю класс Register:
class Register{
  constructor() {
    this.state = {
      email: "",
      username: "",
      password: "",
      confirmPassword: "",
      loading: false,
    };
  }

  onChange(e) {
    this.state[e.target.name] = e.target.value;
  }

  onSubmit(e) {
    const { email, phone, password } = this.state;
    const formData = {
      email,
      username,
      password,
    };
    console.log(formData);
  }

}
export const register= new Register();

Внутри, для старта, есть 2 метода: onChange - меняет state в зависимости от вводимых данных и onSubmit - компоновка и отправка данных.

Далее я импорчу созданный объект в index-файл(где подключаю все модули) :
import {register} from './module/Register';

const inputs = document.querySelectorAll('.js-input-valid');
const sendBtn = document.querySelector('.js-send-form');
const registerForm= document.querySelector('.js-register-form');

inputs.forEach((el) => {
  el.addEventListener('input', function (e) {
    register.onChange(e)
  })
});

registerForm.addEventListener('submit', function (e) {
  e.preventDefault()
  register.onSubmit(e)
})


Далее я вешаю обработчики событий и подключаю функции которые должны вызываться...

Вопросы следующие:
Правильно ли я подошёл к реализации данного модуля ? (смущает то, что я оброботчики событий вешаю вне объекта Register... это можно было бы сделать в constructor, но вроде это мовитон)

Если с reactom понятно как в принципе выстраивать архитектуру, то тут не совсем понятно... В реакте, внутри компонента мы вешаем обработчик событий, привязываем функцию и рендерим компонент... В этом же случае у нас есть вёрстка и нужно к ней привязываться... Как правильно подойти к реализации ?
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы