асинхронно данные что бы их нарисовать, как то вместе? Без доп обертки, которая будет хранить состояние нужной загрузки
https://ru.reactjs.org/docs/concurrent-mode-suspense.html#approach-3-render-as-you-fetch-using-suspense кажется нашел решение в офф доке
А что за ресурс fetchProfileData в доке? Никто не разбирался, что за бред >.<
кто то решал такую задачку? Как обернуть реакт компонент, который опирается на данные из промиса, без описания загрушки в компоненте?
кто может подсказать по дата фетчину и Suspense?
что такое загрушка
некий скелет, пока нет данных для отображения React.Suspense.fallback
типа такого, но еще хотелось бы добавить ErrorBoundary. И лучше в композиции, где используется ViewSource сделать обертки (2 фото)
<Suspense fallback={тут скелет}=> не?
да ты прав) проблема в другом, как создать Component который не должен этот скелет у себя обрабатывать
понял. ну я больше сторонник того, что бы такую логику на уровне стейт менеджера реализовывать
тк возвращать Promise<React.Element> он не позволит использовать в jsx
не понял тебя)
я больше мучное люблю
ну извини. тоже не люблю когда от темы отходят. но я сам много раз сталкивался с подобным и каждый раз убеждался что логику лучше вытаскивать за пределы компонента. и запросы делать тоже за пределами.
много однотипных действий, вся бизнес логика вытянута, просто не удобно/не приятно писать лишнию логику на реакте для таких кейсов
полностью согласен если речь идет о геморном стейтменеджере например таком как redux. а вот если взять effector код пишется в удовольствие и ты бы написал меньше кода с ним чем написано в твоем примере.
вот например тут в коде вижу потенциальные уязвимые места. например service если измениться, у тебя пойдет запрос повторный. но если пойдет повторный запрос надпись 'loading...' не появиться потому что старые данные этому помешают. придется вводить флайг isLoding который нужно вручную включать/выключать при старте и завершении запроса. effector из коробки это бы сделал
представь себе отдельную модалку которая загрузила данные и показа и все. service - одна ручка и не более. реакт из коробки это делает, но через стейт =(
хотя в офф доке написано, что можно (см ссылку выше). Но там кривой пример =((
а еще, если ты покинул роут или каким-то еще способом размонтировал компонент, в момент когда запрос ушел, по завершению запроса будет setState и реакт кинет свою ошибку об этом.
не уверен… ну можно вызывать метод отмены промиса, все в сервисе есть, спасибо 😉
да, можно. но все это действия дополнительные. я через все это не один раз прошел
что значит дополнительные?
ну useEffect возвращающий коллбек, в нем отмена запроса
дай угодаю, ты ведь не так давно задумался зачем тебе этот стейтменеджерный бойлепрлейт? как давно стал писать логику внутри компонентов?
спасибо, Тимофей) помог! Так и быть, прокидывал функцию в пропсы
и 3 года уже как не менял мнения?)
рекомендуешь посмотреть в сторону effector?
Посмотри пример
а ну это нагуглил, там же красный варнинг что экспереметльано и могут выпилить) а ты говоришь 3 года)
Я задумался, мы через суспенс можем догружать часть кода как отдельный бандо, а можно его использовать как обертку над асинхронными данными. В примере показано, типа да. Но не получилось сделать. Так была бы классная композиция с обработки ошибок через спец реакт компонент и показа скелета пока нет данных. Со стороны чтения jsx - сказка
Так эту идею я решил попробовать этой ночью.
ну я вот тоже возлагал большие надежды на swr пока его не попробовал. а тут что-то очень похожее
вот какой пример. казалось бы, красота)
хех, его и использую
а я вот взял однажды и пожалел. если надо тупо сделать запрос и показать данные. вполне себе прокатит. но шаг всторону. надо данные изменить, передать другим компонентам, куда-то наверх или что-то еще с ними сделать. и начинается возня такая что ну его к черту)
это уже архитектурные вопросики
именно так. я вот решил их путем использования effector)))
я так и не попробовал его, есть тру пример по решению проблемы выше?
ну не знаю, я когда зашел в доку эффектора и бегло ознакомился с эффектами, евентами, сторами. сразу понял какие преимущества он дает. примера под рукой нет
он ведь больше функциональный? У меня здесь ООП через Mobx + Ioc/DI (SOLID)
с mobx имел дело, но мне больше по душе пришелся как раз effector по причинам отсутствия лишнего кода. на много меньше кода на нем пишешь
эх.. над попробовать. как то видел доку.. ивенты это оч интересно
Обсуждают сегодня