Предзагрузка данных через роутинг

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 พ.ย. 2024

ความคิดเห็น • 124

  • @Romul3003
    @Romul3003 2 ปีที่แล้ว +35

    Ахренеть! Я не успеваю за всем этим фронтэндом) Спасибо!

    • @mkonin
      @mkonin 2 ปีที่แล้ว +9

      Присоединяюсь. Ток к одному привык уже новое

    • @ГусяНоздреватая
      @ГусяНоздреватая ปีที่แล้ว +1

      Век живи, век учись
      Быть разрабом зашибись

  • @stepankizim3277
    @stepankizim3277 2 ปีที่แล้ว +48

    Ваш канал сокровище для Junior dev

    • @raufhashimov241
      @raufhashimov241 2 ปีที่แล้ว +7

      И не только для джуна :)

    • @threehundredbucks3212
      @threehundredbucks3212 ปีที่แล้ว +1

      @@raufhashimov241 сильно сомневаюсь, что НЕ джун станет смотреть ролик по новой фиче, вместо того-чтобы открыть оф доку )

    • @СашаАлександр-е4м
      @СашаАлександр-е4м 2 หลายเดือนก่อน

      ​@@threehundredbucks3212 станет)

  • @biLLie_wiLLie
    @biLLie_wiLLie 2 ปีที่แล้ว +9

    Я два выпуска назад попросил Михаила рассказать про это обновление и он меня услышал)

  • @6azinga
    @6azinga 2 ปีที่แล้ว +3

    Спасибо огромное за то, что Вы находитесь на острие технологий front-end!

  • @it.s_vlad
    @it.s_vlad 10 หลายเดือนก่อน +2

    для тех, кто не понимает, зачем нужен loader:
    - без использования loader - сначала загружается компонент, потом после его рендера начинается загрузка данных в useEffect.
    - с использованием loader - компонент и данные загружаются параллельно.

    • @nevrox6197
      @nevrox6197 10 หลายเดือนก่อน

      Но в таком случае отстутсвует lazy loading и клиент не видит ничего,немного не понятен плюс этого подхода,кроме того что не подтягиваются хуки реакта

    • @NovikovEugene13
      @NovikovEugene13 7 หลายเดือนก่อน

      Просто прописываешь if (!data) return null и не паришься насчёт лишнего рендера (выполнения функции компонента)

  • @yuriyovdeyev685
    @yuriyovdeyev685 ปีที่แล้ว +3

    Здорово, очень полезная инфа и подача отличная! Спасибо!

  • @_Black_Mirror_
    @_Black_Mirror_ 2 ปีที่แล้ว +2

    Спасибо за разбор новых возможностей. Пользоваться я этим не буду. Новый синтаксис никакой пользы не несет

  • @YaniaRZ
    @YaniaRZ ปีที่แล้ว

    Спасибо! Буду следить за каналом, чтобы следить за новинками)

  • @offiza8631
    @offiza8631 2 ปีที่แล้ว +1

    Спасибо большое за такое полезное видео!)

  • @victormog
    @victormog 2 ปีที่แล้ว +1

    Шикарное видео!

  • @oleksiikriuchkov7399
    @oleksiikriuchkov7399 ปีที่แล้ว

    Такой подход очень ускоряет загрузку!🥰

  • @АнатолийГорбов-о1ь
    @АнатолийГорбов-о1ь ปีที่แล้ว

    Очень интересное видео! Спасибо за курс по v6 реакт роутеру!)

  • @irinal7766
    @irinal7766 2 ปีที่แล้ว

    Спасибо, очень своевременное для меня видео)

  • @dimalukashenko4865
    @dimalukashenko4865 2 ปีที่แล้ว +1

    Хороший урок, очень ждал продолжения курса

  • @dimondmarcker3179
    @dimondmarcker3179 2 ปีที่แล้ว +6

    на самом деле теперь v6.4 очень похожа на remix, в плане всех этих лоадеров, Form и т.д.
    в теории это может полностью изменить подход к разработке некоторых приложений
    хочется еще больше видео про react-router-dom v6.4!

    • @oops61rus
      @oops61rus 2 ปีที่แล้ว

      судя по странице ReactRouter там справа вверху прям отсылка идет к Remix, так что вполне вероятно

    • @kujojotaro3464
      @kujojotaro3464 2 ปีที่แล้ว

      Это и есть remix

    • @olegkravchenko9655
      @olegkravchenko9655 2 ปีที่แล้ว +2

      Если внимательно посмотреть на имена авторов того и другого, то всё станет понятно ;)

  • @romuelson
    @romuelson 2 ปีที่แล้ว

    Отличная декомпозиция 🤠

  • @МатвейДенисов-т2к
    @МатвейДенисов-т2к 2 ปีที่แล้ว

    Михаил, контент потрясающий

  • @Konstantin19877
    @Konstantin19877 2 ปีที่แล้ว

    Очень круто. Спасибо за контент.

  • @dmitryts9093
    @dmitryts9093 2 ปีที่แล้ว

    Спасибо за Ваши видео

  • @Алексей-и5д3в
    @Алексей-и5д3в 2 ปีที่แล้ว

    Супер. Спасибо большое

  • @Григорий-ь5ь7о
    @Григорий-ь5ь7о ปีที่แล้ว

    Он Гений

  • @СергейВер-и9ю
    @СергейВер-и9ю 2 ปีที่แล้ว +15

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

  • @superboba2007
    @superboba2007 2 ปีที่แล้ว +7

    на мой взгляд в случае с использованием с defer получается какое то трудно читаемое нагромождение кода всего лишь для того, что бы показать компонент Loader.
    почему бы для этой задачи не сделать хук и использовать его вроде: const { data, loading, error } = useFetch("...") ?

    • @СергейВер-и9ю
      @СергейВер-и9ю 2 ปีที่แล้ว

      import {useCallback, useState} from 'react';
      const useRequest = (promise: (...args: TParams) => Promise) => {
      const [data, setData] = useState(null);
      const [loading, setLoading] = useState(true);
      const [error, setError] = useState(null);
      const run = useCallback((...args: TParams) => {
      setData(null);
      setLoading(true);
      setError(null);
      promise(...args)
      .then((response) => {
      setData(response);
      setError(null);
      })
      .catch((error: Error) => {
      setData(null);
      setError(error.message);
      })
      .finally(() => {
      setLoading(false);
      });
      }, [promise]);
      return {data, loading, error, run};
      };
      export default useRequest;

  • @АлександрКос-р3щ
    @АлександрКос-р3щ 6 หลายเดือนก่อน

    Про try catch не забываем

  • @ufc_uz6
    @ufc_uz6 ปีที่แล้ว

    Супер

  • @0xSxVKaJnwQ
    @0xSxVKaJnwQ 11 วันที่ผ่านมา

    Тоже не понял этих танцев с бубном.
    Если важно максимально быстро начать грузить данные, недостаточно ли просто возвращать плейсхолдер, если !data?
    Спустя 2 года... этим функционалом пользуются в проектах?
    Михаил - красавчик, это не обсуждается)

    • @mishanep
      @mishanep  11 วันที่ผ่านมา

      Возможность загрузки данных средствами роутинга - это попытка перенести на уровень библиотеки функционал фреймворка (в данном случае Remix). Пользуются ли сегодня на проектах - не скажу. У меня на проекте до сих пор пятая версия роутинга используется 😁

  • @CyberGenius777
    @CyberGenius777 2 ปีที่แล้ว +3

    Не знаю насколько это нужно. Геморроя только добавили. Будет ли этот функционал кто-то реально использовать и переписывать все - неизвестно

  • @АлМ-ы8ъ
    @АлМ-ы8ъ ปีที่แล้ว +2

    Автор, скажите что такое "эндерфугнансы " на 19:18 (по таймлайну) ?

    • @mishanep
      @mishanep  ปีที่แล้ว +2

      😄😄😄
      Звучит смешно. Переслушал несколько раз и сам не пойму)) Ума не приложу откуда вылезло))

    • @АлМ-ы8ъ
      @АлМ-ы8ъ ปีที่แล้ว

      @@mishanep да и пофиг, все равно ты молодец😃

  • @ВладиславСвидерский-г6й
    @ВладиславСвидерский-г6й 2 ปีที่แล้ว

    спасибо!

  • @alexandrmos205
    @alexandrmos205 4 หลายเดือนก่อน

    Подскажите, а как в переменную router передавать дополнительные параметры. Допустим я хочу передать в пропс одного из компонентов вложенных в router, состояние, которое создается хуком, но, так как хуки можно создавать только внутри компонентов (в данном случае внутри App), а router является внешней константой, то при передачи ее в RouteProvider, я никак этого сделать не смогу. Т.е. мне нужно создавать router уже внутри компонента App, чтобы передавать в пропсы состояния сделанные с помощью хуков, т.е. других вариантов нет?

  • @zoombix5753
    @zoombix5753 2 ปีที่แล้ว +3

    Можно ещё роликов по новой версии роутера?)) Там линки обновили с ними немного не ясно(

  • @alexandrmos205
    @alexandrmos205 4 หลายเดือนก่อน

    Подскажите пожалуйста. Если работать не через Route, а через массив объектов, то как делать редирект, например, по клику на кнопку. Ведь useNavigate, работает только с route

  • @user-irinaais90
    @user-irinaais90 8 หลายเดือนก่อน +1

    Расскажите, пожалуйста, как писать вложенные роутеры по версии React Router 6.4 с помощью createBrowserRouter

    • @НікітаКорчемний-г4ч
      @НікітаКорчемний-г4ч 7 หลายเดือนก่อน

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

    • @user-irinaais90
      @user-irinaais90 7 หลายเดือนก่อน

      @@НікітаКорчемний-г4ч спасибо

  • @unknownrus920
    @unknownrus920 2 ปีที่แล้ว +5

    Я может что упустил, но в чем преимущество перед просто загрузкой контента через useEffect при переходе на страничку?

    • @exsterx
      @exsterx 2 ปีที่แล้ว +3

      тот же вопрос.
      я храню состояние в recoil
      без перезагрузки страницы - ранее подгруженные данные открываются мнгновенно
      фишка - дрочево ради дрочева

    • @CyberGenius777
      @CyberGenius777 2 ปีที่แล้ว

      @@exsterx Согласен, ненужный гемор. Может это как-то влияет на производительность, что навряд ли... В общем, ненужная фишка

    • @d0paminer
      @d0paminer 2 ปีที่แล้ว

      useEffect триггерит сайд-эффекты после рендера.

    • @exsterx
      @exsterx 2 ปีที่แล้ว +1

      @@d0paminer раскройте подробнее, что вы имеете ввиду

    • @The14Some1
      @The14Some1 ปีที่แล้ว

      @@exsterx Ну как минимум один дополнительный draw call

  • @limpchh
    @limpchh 2 ปีที่แล้ว +1

    Чем тогда отличается загрузка постов через useEffect и defer. Ведь и там и там можно показывать лоадер, отличается только реализация

    • @mishanep
      @mishanep  2 ปีที่แล้ว +2

      Создатели библиотеки с роутингом просто предложили нам разделить логику получения и потребления данных.

    • @limpchh
      @limpchh 2 ปีที่แล้ว

      @@mishanep Понял, спасибо за ответ)

  • @singlebw4065
    @singlebw4065 2 ปีที่แล้ว

    Здравствуйте Михаил. Как создать бесконечный роутер?

  • @СергейГеоргиев-в1ч
    @СергейГеоргиев-в1ч ปีที่แล้ว

    Как совместить это с reduxjs/toolkit, если мы обычно в toolkit вызывали асинхронную функцию через createAsyncThunk и через dispatch вызывали нужный нам reducer и записывали данные в state, а уже через redux-react используя useSelector передавали данные? Как я понял, сейчас мы данные получаем через useLoaderData помимо reduxjs/toolkit

    • @ГусяНоздреватая
      @ГусяНоздреватая ปีที่แล้ว

      Лучше не надо совмещать, обычно редакс нужен для управления состоянием каких-то больших данных, а предварительная загрузка react-router-dom для получения и отрисовки небольших.
      Ну а вообще для больших проектов данная фича выглядит как оверхед, ибо редакс или что-нибудь другое для state manage (например, react-query) прекрасно справиться без помощи библиотеки, которая в первую очередь нужна для роутинг, а не для предзагрузки

  • @sevgenberg585
    @sevgenberg585 ปีที่แล้ว

    {request,params} выдает ошибку, Unhandled Thrown Error!
    _ref is undefined
    делал все по видео!Что это может быть?

  • @Napolion4ik
    @Napolion4ik 2 ปีที่แล้ว

    На 23:15 вы не писали return defer ({...}), он обезателен или можно обойтись await-ом в return-e

    • @The14Some1
      @The14Some1 ปีที่แล้ว

      Интересно, вы уже досмотрели до конца, или всё ещё ждёте ответа? :)

    • @Napolion4ik
      @Napolion4ik ปีที่แล้ว

      @@The14Some1 хаххаха смешно))досмотрел до конца )забыл удалить коментарий

  • @FOND645
    @FOND645 ปีที่แล้ว

    Подскажите, дружит ли React Router Dom с Electron?

    • @mishanep
      @mishanep  ปีที่แล้ว

      У меня пока не было опыта работы с Electron.

  • @SkyAndStarss
    @SkyAndStarss ปีที่แล้ว

    а можно ли подход с роутер лоадером соеденить с редакс тулкитом??

  • @user-fn4jw5nc3z
    @user-fn4jw5nc3z 9 หลายเดือนก่อน

    Да роутер многое на себя забирает из функционала, не думаю что многие будут этим пользоваться, скорее тем что привычнее

  • @vitaliynoveles6626
    @vitaliynoveles6626 2 ปีที่แล้ว

    Спасибо за видео) Подскажите, пожалуйста, какая у вас тема стоит?)

    • @mishanep
      @mishanep  2 ปีที่แล้ว

      Codesandbox

  • @Napolion4ik
    @Napolion4ik 2 ปีที่แล้ว

    Не много не понимаю какие плюсы дает этот метод предзаргрузки, да я сам когда то думал, а почему нельза передавать какие то данные по роутер после клика, всеравно под скелетом у нас используеться useContext , но разработчики что-то перемудрили

  • @Aleksandr_Bolshakov
    @Aleksandr_Bolshakov ปีที่แล้ว

    Уроки супер, но расскажи как организовать проект вместе с отдельным npm пакетом в котором находятся компоненты и импортируются в проект

  • @adamburke4496
    @adamburke4496 ปีที่แล้ว

    А есть ли кэширование в данной версии роутера?

  • @Maximurz1k
    @Maximurz1k 2 ปีที่แล้ว +1

    Пример понятный но не продакшн) Покажите плз пример с RTK Query)

    • @mishanep
      @mishanep  2 ปีที่แล้ว

      Так это же два разных подхода. Может быть со временем другие библиотеки предложат нам интеграции под возможности роутинга, пока она сырая.

    • @Maximurz1k
      @Maximurz1k 2 ปีที่แล้ว

      @@mishanep Ну пока это первый заход "быть похожим на ангуляр" ну наконец то))) Ток в ангуляре можно было в резолвере сервисы подсосать. Это же тема не только для резолвинга данных, но еще и гвардинг доступов.
      Я вижу проблему в том, что нет четких паттернов "как делаем", просто сделали и в путь) Ну, будем вырабатывать

    • @redhook777
      @redhook777 2 ปีที่แล้ว +1

      В продакшене ведь чаще всего next

    • @Maximurz1k
      @Maximurz1k 2 ปีที่แล้ว

      @@redhook777 1) причем тут ssr 2) "чаще всего" это где? крупняк редко его использует, чаще свое. и большинство SPA это внутрянка где ssr не нужен

  • @ramilnazmiev9448
    @ramilnazmiev9448 ปีที่แล้ว

    Подскажите как тема в VS называется ?

    • @mishanep
      @mishanep  ปีที่แล้ว

      CodeSandbox

  • @Игорь-ч6н9м
    @Игорь-ч6н9м 2 ปีที่แล้ว +1

    Как это будет работать с redux? Приходящие данные надо будет через стор обрабатывать?

    • @mishanep
      @mishanep  2 ปีที่แล้ว +1

      Здесь могут быть разные сценарии поведения. В базовом варианте можно обойтись без складывания в стор. Здесь скорее вопрос, как избежать повторных запросов. На данной стадии вариантов кэширования из коробки не видно. Как подружить с лоадер с редаксом - вопрос, я пока не пробовал =)

    • @АлександрСкиталец-ц7р
      @АлександрСкиталец-ц7р 2 ปีที่แล้ว +2

      Думаю если вам не нужны эти будут данные в другом компоненте. То их не стоит пробрасывать в стор redux. Бывает ситуации когда вам надо только получить и отрисовать данные и больше не где не использовать. Пока всё лишь предположение. Но всё равно очень полезный инструмент. Надо пробовать использовать в проекте.

  • @tweeker2104
    @tweeker2104 2 ปีที่แล้ว

    А возможно ли использовать useLoaderData в typescript? А то я пробую, а оно ругается на типы. В документации react-router-dom ничего не нашел об этом (ну или плохо искал :) )

    • @mishanep
      @mishanep  2 ปีที่แล้ว +2

      В файлах декларации возвращаемый тип для этого хука идет как unknown. Поэтому, по логике, надо подготовить свой тип и указать его.
      const data = useLoaderData() as MyType

    • @Asgyr
      @Asgyr 2 ปีที่แล้ว

      @@mishanep Спасибо очень помог ваш ответ !)))

  • @CJIu3eHb
    @CJIu3eHb 2 ปีที่แล้ว

    Интересно, а если без defer, то как отрисовать лоадер на зависшей (пока данные грузятся) странице, с которой идет переход. Чтобы люди понимали, что нажатие на кнопку/ссылку сработало и что-то делается.

    • @andreyyastrebtsov4367
      @andreyyastrebtsov4367 2 ปีที่แล้ว +1

      useNavigation там есть хук и у него состояние есть. Ну тоесть используем так const navigation = useNavigation(). И там уже цепляемся navigation.state === 'loadiing и рисуем что надо

  • @Wra-ij8yk
    @Wra-ij8yk ปีที่แล้ว

    Подскажите этот курс еще актуален?

    • @mishanep
      @mishanep  ปีที่แล้ว +1

      Видео свежее, так что актуально. Но зависит от того, какую версию библиотеки вы в своем приложении используете. Там есть различия между версией 5, 6 и 6.4. В рамках плейлиста разбирается 6-я версия и последние дополнения, начиная с 6.4.

  • @constantine6464
    @constantine6464 2 ปีที่แล้ว

    как раз когда реакт получает новый нативный хук use

  • @ilovekurut
    @ilovekurut 11 หลายเดือนก่อน

    ох да запутаться можно.Пока одно выучишь, другое учить надо. И не понятно что на интервью спросят.Поэтому учим все подряд

  • @xlebuwek1
    @xlebuwek1 2 ปีที่แล้ว

    Add text 12:44

  • @FailValiev
    @FailValiev 2 ปีที่แล้ว

    А если заново надо получить данные?

    • @nikitasafonkin3077
      @nikitasafonkin3077 2 ปีที่แล้ว

      перегружать компонент🤔

    • @vty4261
      @vty4261 ปีที่แล้ว

      @@nikitasafonkin3077 useRevalidate()

  • @alexandrd419
    @alexandrd419 2 ปีที่แล้ว +1

    Если вы использовали angular, то расскажите почему react лучше? Ну кроме как простоты и количества вакансий. Помоему ангулар куда логичнее. верстка от логики отдельно, модульный подход. Есть сервисы. Компоненты верстать может верстальщик, без знаний js/ts. Все есть из коробки, и никаких там а мы на проэкте используем мобх, или еще чего.
    Хотя и простота тоже такое.... если взять ts, rxjs, redux(и всякий другой зоопарк), webpack, то тоже получается не так уж и просто.
    Просто учу angular. Мне нравится. Все из коробки. нормальный ооп. но вакансий на него значительно меньше. Вот думаю не зря ли его осваиваю? Хотя посмотрел в сторону реакт. Какая-я то ерунда и все вперемешку.

    • @mishanep
      @mishanep  2 ปีที่แล้ว +2

      Я не работал с Ангуляром. Касаемо Реакта, то здесь от проекта надо плясать. Не каждый проект нуждается в роутинге на стороне клиента, не всегда нужен Redux и его аналоги, многие проекты спокойно обходятся и без ts, что удешевляет разработку и снижает порог входа.

    • @drunken_rubbish
      @drunken_rubbish 2 ปีที่แล้ว +2

      В ангуляре зачастую ориентироваться сложнее, сам rxjs тоже весьма неприятная и сложная штука. На реакте в целом многие моменты делаются гораздо проще, на реакте больше выбор библиотек, на реакте лучше можно контролировать ререндеры. Да и он банально легче и меньше. Это его основные плюсы.
      У ангуляра, то что многое с коробки и то, что в модульном подходе код выглядит красиво, правда до первого взаимодействия с rxjs)))

    • @denissaripov7130
      @denissaripov7130 2 ปีที่แล้ว

      Реакт даёт просто функцию, которая возвращает html и если возвращает то же, что и в прошлый раз - оптимизирует
      Под капотом ангуляра непонятно что, много декларативности и нужно запоминать какие-то решения тк так придумали разработчики
      Любой чел, знающий js, на реакт за день пересядет, а вот на ангуляр врятли

    • @richardvoronov3482
      @richardvoronov3482 2 ปีที่แล้ว

      Ничем реакт не лучше. Инструмент всегда хорош, когда он в правильных руках. Реакт это библиотека, и его нужно уметь готовить. Ангуляр это фреймворк, свободы чуть меньше чем с реактом в плане композиции приложения и от этого код должен быть выше качеством, чем то что пишут на реакте.
      Реакт просто популярней ангуляра, поэтому его выбирают чаще, от того и вакансий больше. Мало где можно встретить хороший код на реакте как раз из-за того что библиотека не ограничивает разраба ни в чем, кроме не сложных правил написания хуков. Если это большая компания, вероятно, у них есть деньги нанять программистов, если это стартап или средняя компания то, вероятно, они уже наняли "реакт разработчиков", а не программистов. Так что, если хотите поскорее на работу, берите реакт и вперед, если уже освоили реакт попробуйте ангуляр.

    • @The14Some1
      @The14Some1 ปีที่แล้ว +2

      ​@@denissaripov7130 Блин, а тут, типа, придуманные разработчиками решения не нужно запоминать? Вот, мы прям сейчас обсуждаем последнюю версию роутера, который уже в третий раз значительно меняет парадигму своей внутрянки.
      У меня уже голова идёт кругом от редакса, редакс-квери, редакс-санк, ртк-квери и роутера разных версий.

  • @kinafermur
    @kinafermur 2 ปีที่แล้ว

    Михаил, а вы не поделитесь статейкой где откопали такой способ получения данных, или копались в документации? очень интересно, круто что технология не стоит на месте

    • @mishanep
      @mishanep  2 ปีที่แล้ว +1

      Изначально я узнал об этом в их release notes, которыми библиотека поделилась ещё на стадии беты. А дальше через документацию.

  • @vitmih380
    @vitmih380 2 ปีที่แล้ว +4

    И что это дало? Лишь бы было.

    • @vo_skor
      @vo_skor 2 ปีที่แล้ว +1

      Основой принцип реакта - декомпозиция.
      И когда встретишь это на проекте после чувака который любит декомпозировать декомпозированное, не потеряешься 😁

  • @everemchuk
    @everemchuk 2 ปีที่แล้ว

    Ну это еще тот бубен. Ничего нового данные изменения не принесли, только опять проблемы с новой стандартизацией и структурой проекта. Как по мне ничего лучшего чем ReactQuery или же Redux + RTKQuery не придумали. Я думаю что в будущем данная фишка не получит своей популярности, и будет просто как заглушка в библиотеке

  • @sergeysharapov5945
    @sergeysharapov5945 2 ปีที่แล้ว +3

    компонент уже стал каким то грязным и похоже на страницу php с ajax подгрузкой где нужно )

  • @lesters
    @lesters 2 ปีที่แล้ว

    спасибо за актуальную инфу, скажи а почему ты не используешь стандартную запись export default ComponentName ?

    • @mishanep
      @mishanep  ปีที่แล้ว +2

      Иногда использую и экспорт по умолчанию. Не согласен, что это стандартная запись. Многие библиотеки в качестве стандарта как раз используют именованный экспорт. Но для проекта это вопрос привычки и соглашений внутри команды.

  • @lesters
    @lesters 2 ปีที่แล้ว

    ну и есть смысл убирать юзстейт и прочие для замены их на роутинг, он что жрет меньше памяти? или это просто альтернативный подход?

    • @mishanep
      @mishanep  ปีที่แล้ว +1

      Здесь скорее история не про память, а про разные уровни абстракции. У нас, к сожалению или может быть к счастью, слишком много вариантов делания одного и того же. Касаемо производительности я не замерял, не отвечу. Но в теории должно быть быстрее.

  • @СергейВер-и9ю
    @СергейВер-и9ю 2 ปีที่แล้ว

    Берите на заметку классный хук, на подобии useFetch, который поддерживает параметры и гораздо легче всей этой дичи с React router.
    import {useCallback, useState} from 'react';
    const useRequest = (promise: (...args: TParams) => Promise) => {
    const [data, setData] = useState(null);
    const [loading, setLoading] = useState(true);
    const [error, setError] = useState(null);
    const run = useCallback((...args: TParams) => {
    setData(null);
    setLoading(true);
    setError(null);
    promise(...args)
    .then((response) => {
    setData(response);
    setError(null);
    })
    .catch((error: Error) => {
    setData(null);
    setError(error.message);
    })
    .finally(() => {
    setLoading(false);
    });
    }, [promise]);
    return {data, loading, error, run};
    };
    export default useRequest;

  • @raufhashimov241
    @raufhashimov241 2 ปีที่แล้ว

    Какой редактор?

    • @galibibr02
      @galibibr02 10 หลายเดือนก่อน

      vs code

  • @worldandplanet8715
    @worldandplanet8715 ปีที่แล้ว

    Спасибо, очень своевременное для меня видео)