ReactCodeSmells: Не зберігайте похідні дані в стейті.

2023 ж. 14 Ақп.
3 112 Рет қаралды

👉 Перший випуск React Code Smells. Говоримо про те чому не потрібно зберігати похідні дані в State та що робити щоб їх не зберігати.
✉️ Telegram: t.me/reactbeginners
❤️ Підтримати канал: opencollective.com/farstar
💡Всі матеріали курсу: github.com/Drag13/react-learn...

Пікірлер
  • Тобто нам не реба юзеффект? Це шикарно! Моє життя нн буде як раніше)😂

    @yuliasereda5671@yuliasereda56712 ай бұрын
  • Велике дякую за корисний україномовний контент 😎

    @mistertwister931@mistertwister931 Жыл бұрын
  • Інформативно, стисло, зрозуміло. Дякую!

    @user-rj9mn3in9g@user-rj9mn3in9g Жыл бұрын
  • Чекаю з нетерпінням на чергове дуже корисне відео👍

    @jamesmay5088@jamesmay5088 Жыл бұрын
  • Подивився вже 2 ваших відео, чудово викладений матеріал, гарні приклади. Я б додав, що головна проблема таких зв'язаних станів в тому, що коли змінюємо стан firstName або secondName, то треба також змінювати стан fullName вручну, а інакше fullName буде не актуальним. Є принцип DRY який каже що будь-яка частина інформації в системі має мати тільки одне авторитетне місце. У випадку з fullName і firstName в нас firstName зберігається в системі в 2-х місцях які не зв'язані між собою і не знають один існування один одного, хоч і знаходяться на сусідніх строках коду. Тож похідні стани порушують принцип DRY. Принципи DRY, KISS і YAGNI стоять в основі всього. Весь поганий код через їх порушення.

    @vladislavmurashchenko627@vladislavmurashchenko627 Жыл бұрын
  • Дякую!

    @vitaliihubariev9523@vitaliihubariev9523 Жыл бұрын
  • Здається зрозумів, як виправити всі свої незліченні інпути, дякую. Будуть ще питання пізніше, можливо теж підійдуть для коротенького відео як ідея ;)

    @olekrumian@olekrumian Жыл бұрын
  • Нужно ли всегда использовать обработчик onChange для полей ввода. Я создавал калькулятор в учебном задании и юзал такое, без использования onChange. Я просто меняю состояние, а затем значение ввода также меняется. Это правильный путь? Или я должен всегда использовать onChange всякий раз, когда я работаю с полем ввода?

    @sevgenberg585@sevgenberg585 Жыл бұрын
    • Є два підходи. Контрольовані інпути (onChange або onBlur + state) або не контрольовані, коли ми взагалі в стейті нічого не зберігаємо, а на сабміті вичитуємо форму. Правильно обидва варіанти, але перший розповсюдженіший

      @reactdev@reactdev Жыл бұрын
  • Тільки почала дивитись і хотіла запитати. Є таке правило, що якщо ти не не повинно змінюватись те, на що не впливає юзер, тобто сайдефект якийсь. Це з принципу СОЛІД здається. Так от питання над яким я давно задумалась полягає в тому ,що чи не є порушенням цього правила зберігання даних юзерНейма і імейла наприклад в одному стетйті в об'єкті як у вас. Чи це типу як дані однієї сутності.

    @yuliasereda5671@yuliasereda56712 ай бұрын
    • Можливо ви говорите про I - interface segregation. Але я звик тримати пов'язані дані разом. Звісно, якщо дані не стосується одне одного тримати їх в одному стейті і не правильно і не зручно

      @reactdev@reactdev2 ай бұрын
    • @@reactdev так про нього. Дякую

      @yuliasereda5671@yuliasereda56712 ай бұрын
  • дякую за короткі відоси, бо дивитись часові щоб взяти щось потрібне че ту мач

    @lesters@lesters Жыл бұрын
  • Таке питання. Обрахування будуть робитися на кожний рендер, але якщо ці обрахування досить "важкі", то не хотілось би робити їх, якщо перерендер стається з іншої причини, не пов'язаною зі зміною того стану, для якого потрібні ці обрахування.

    @maksymleonidov7059@maksymleonidov7059 Жыл бұрын
    • Мабуть тоді ці обчислення краще зробити в useMemo ?

      @maksymleonidov7059@maksymleonidov7059 Жыл бұрын
    • @@maksymleonidov7059 Так, якщо у вас є дійсно складні обчислення (і ви це поміряли) тоді useMemo або будь-яка інша реалізація мемоізації стане у нагоді

      @reactdev@reactdev Жыл бұрын
  • використати юзмемо, а в депенденсі арей вписати стейти імені та прізвища

    @user-ue5do9rt5u@user-ue5do9rt5u11 ай бұрын
    • Перед тим, як використовувати useMemo - потрібно поміряти скільки реального часу він вам зекономить, а потім вже його додавати. (Ну або якщо розмір елементів не обмежений)

      @reactdev@reactdev11 ай бұрын
  • Хлопцы получается шё, когда мы меняем значение ввода путем изменения состояния, а затем отправляем событие изменения, тогда React регистрирует как setState, так и событие, считает его повторяющимся событием и потом обрабатывает его?Я правильно вас понял?

    @sevgenberg585@sevgenberg585 Жыл бұрын
    • Можливо якщо переформулювати питання, на нього буде легше відповісти.

      @vladislavmurashchenko627@vladislavmurashchenko627 Жыл бұрын
KZhead