@iordania

Состояния для модулей в проекте?

Всем привет! Прошу помощи в разъяснении следующего момента, уже достаточно долго бьюсь над этим пониманием ! Пишу проект (не spa) без использования ф-ворков таких как vue,angular, react.
Все модули проекта пишутся через классы, на нативном js, к примеру:
class SignIn {
  constructor({ form, fields, btn }) {
    this.form = document.querySelector(form);
      this.fields = this.form.querySelectorAll(fields);
      this.btn = this.form.querySelector(btn);
      this.init(this.form, this.fields);
    this.formData = {
      email: "",
      password: "",
    };
  }

  submitForm(e) {
    e.preventDefault();
// отправка данных
  }

  changeInput(e) {
    this.formData[e.target.name] = e.target.value;
  }

  render(state) {
    if (this.btn !== undefined) {
    if (state.loading) {
      this.btn.classList.add("btn--loading");
      this.btn.setAttribute("disabled", "disabled");
    } else {
      this.btn.classList.remove("btn--loading");
      this.btn.removeAttribute("disabled");
    }
  }
  }

  init(form, fields) {
    form.addEventListener("submit", (e) => {
      this.submitForm(e);
    });

    fields.forEach((input) => {
      input.addEventListener("input", (e) => {
        this.changeInput(e);
      });
    });
  }
}

export default SignIn;


1.Оправданно будет использовать в такого рода проектах менеджеры состояний для подобных модулей ?
К примеру при отправке формы я дизейблю форму и показываю лоадер, а при получении данных либо показываю ошибки либо перекидываю на другие страницы и т.д.

2.Стоит ли использовать к примеру redux в таком случае или есть более оправданные библиотеки и подходы для этого ?
3.Или достаточно просто написать отдельный класс для управления селекторами при каком либо действии одного или другого модуля ?

На данный момент всё написанно с участием redux, но есть некоторые проблемы с которыми сталкнулся в этом вопросе Как вызвать «отдельный рендер»?

Есть ещё идея написать отдельный модуль/класс для отправки и получения данных со своими данными и ичпользовать его как actions из редакса, но без редьюсера и типов.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы