Работа с map и set в React компонентах

Поделиться
HTML-код
  • Опубликовано: 22 ноя 2024

Комментарии • 20

  • @alexd1723
    @alexd1723 2 года назад +5

    Годный контент, красавчик!Планирую в бушующем на реакт переходить, буду пересматривать твои ролики,продолжай в том же духе

    • @ayub_begimkulov
      @ayub_begimkulov  2 года назад

      Спасибо за фидбэк!
      А сейчас на чем пишешь?)

    • @alexd1723
      @alexd1723 2 года назад

      @@ayub_begimkulov лучше тебе не знать, древняя технология )

  • @ГригорийМорозов-щ5т

    Просто красавчик, лайк без вариантов!
    Но есть вопрос: метод set в хуке useMap не запустит ре-рендер компонента так как размер (число) остался прежним?

  • @myspace2003
    @myspace2003 2 года назад +2

    Очень крутое видео.Молодец

  • @ВячеславАрустомян
    @ВячеславАрустомян 4 месяца назад

    С Map не очень понятно
    пример использования кажется не очень корректный, что если именно обновить значение в Маре
    те на каждое действие по этому ключу менять тру/фолс
    сайз от этого не изменится, следовательно ререндера не произойдет
    Смущает конечно тот факт что за два года никто не прокомментировал это мейби я не прав
    сначала хотел еще написать что кажется использование такого хука не очень хорошей практикой кажется,
    потому что ссылка на Маp всегда будет одна и та же и может возникнуть ошибка там где будут следить за изменениями этого Map,
    но потом увидел что это только для перебора данных, и обращаться к мапе мы тут не можем (например взять значение по ключу)

  • @geniamasanin8322
    @geniamasanin8322 2 года назад +4

    Привет, ты в методе add возвращаешь обычный сет, а не ту обёртку который твой хук делает

    • @ayub_begimkulov
      @ayub_begimkulov  2 года назад

      Да, хорошое замечание, не подумал об этом.

  • @baileysli6235
    @baileysli6235 Год назад +1

    9:21 вопрос, а почему useState, а не useRef?

    • @baileysli6235
      @baileysli6235 6 месяцев назад

      потому что нельзя передать колбэк в него и будет много дублей в памяти на каждый ререндер. Лучше тогда useMemo

  • @artemkhrulkov5498
    @artemkhrulkov5498 2 года назад +1

    Привет!
    Слушай, я наверное не так понял, но все равно хотел уточнить: ты говорил, что использование forEach не слишком эффективно на сэтах, но в кастомном мапе как раз он и используется. Повлияет ли это на производительность?

    • @ayub_begimkulov
      @ayub_begimkulov  2 года назад +1

      Привет.
      Да, forEach не настолько эффективен, как forEach на массиве, но в целом сложность O(n).
      Я скорее говорил о том, что если мы будем генерить новый сет каждый раз + еще вызывать forEach для показа каждого из элементов - то смысла от использования сета не будет.
      В данном случае проблем с производительностью быть не должно.
      Ну и в целом, это один из подходов, нужно понимать, что у всего есть свои плюсы и минусы.

  • @imperror555
    @imperror555 2 года назад

    Вся эта обёртка нужна только для того, чтобы добавить метод map? Вручную прописывать все методы как-то не очень) проще тогда отдельно его создать или на худой случай в прототип добавить конкретному возвращаемому сету/мапу

    • @ayub_begimkulov
      @ayub_begimkulov  2 года назад +1

      Если удобнее, можно сделать отдельные утилиты.
      Можешь еще раз пересмотреть видео, обертка нужна для того, чтобы эффективнее работать с мапом/сетом и не пересоздавать их при каждом обновлении.

    • @imperror555
      @imperror555 2 года назад

      @@ayub_begimkulov можно положить мап в реф и он не будет обновляться каждый ререндер

    • @maxhermany
      @maxhermany 2 года назад

      @@imperror555 а как тогда оповестить компонент, что мапа изменилась и нужно запустить рендер компонента?

  • @demos.
    @demos. Год назад

    Блин, подготовился бы к записи видео. В целом полезно, но смотреть и слушать.... Просто ужас

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Это старое видео. Сейчас таких проблем нету.

    • @demos.
      @demos. Год назад

      @@ayub_begimkulov ну я попал именно на это ) Посмотрю другие, если будет что интересное. Спасибо за ответ!