Ответы пользователя по тегу React
  • Сколько запросов нормально посылать с front на rest api?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    1) Так делать нормально до тех пор, пока это удовлетворяет наши требования по быстродействию.
    Если требования не оговорены - то "пока сайт визуально не тормозит".
    А критерий "торможения" зависит от нескольких факторов:
    - Объем передаваемых данных.
    - Качество интернета пользователей. Если пользователи работают с 3G в полях - логично, что требования будут выше.
    - Как мы отображаем данные в процессе загрузки. Если пользователь получает на экран что-то полезное уже после ответа 1-го запроса - хорошо.
    - От того, как быстро наш сервер обрабатывает те или иные запросы. Лучше быстро отдать/отобразить какие-то основные данные, а потом догружать дополнительные (если это долго).
    2) Подход REST с разделением сущностей по эндпоинтам не очень-то способствует сокращению количества запросов.
    Можно, конечно, добавлять связанные сущности в ответы... Но там, где они не нужны - мы получаем overfetching.
    Можно посмотреть в сторону graphql для решения этой задачи. Но т.к. вопрос "стоит ли переживать" - видимо, пока не стоит.
    Ну или отходить от концепции REST в угоду оптимизации.
    Ответ написан
    Комментировать
  • Как разобраться со всеми этими типами?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    1) Разберитесь сначала с самим TS.
    2) Посмотрите курсы. Минин, например, норм делает.
    3) Книжку можно почитать. И статейки в блоге автора.
    4) create-react-app + ts поможет стартовать
    5) Доку всегда полезно почитать
    6) Ну и гугл, как всегда, в помощь
    Ответ написан
    Комментировать
  • Как лучше организовать структуру проекта на react?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    1) Базовые принципы неплохо описаны в доке
    2) Все сильно зависит от размера проекта и команды. На маленьких объемах все не так уж важно
    3) Много кода в одном файле это неудобно. Много мелких файлов тоже неудобно. Всегда нужно искать баланс.
    4) Однозначно стоит выделять в отдельные компоненты все переиспользуемое. Стандартные кнопочки, инпуты, элементы интерфейса и пр.
    5) Кстати, неплохая практика оборачивать все сторонние компоненты в свои. Так будет легче их модифицировать или вовсе заменить на самописные, когда припрет.
    6) В мусорку все превратится, если не менять структуру и подходы по мере роста проекта. Разбирайтесь с проблемами по мере их поступления.
    Ответ написан
    Комментировать
  • Как обратиться к Cookies в getServerSideProps?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Похоже, что Cookies - это либа, предназначенная для получения кук в браузере, через браузерное апи.
    А этот код выполняется на сервере - данные о куках нужно доставать из запроса пользователя.
    Данные о нем должны быть в контексте.
    Вот релевантный вопрос с SO
    Ответ написан
    Комментировать
  • Styled components или БЭМ?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Styled Components довольно тяжелай в плане рантайма и так себе влияет на скорость загрузки/работы сайта (если это важно)
    scss/бэм - неудобно увязывать с интерактивом на js, да и вообще нейминг перегруженный для компонентного подхода
    css modules кажутся неплохим компромиссом в этом случае

    Вот тут есть годное сравнение современных подходов css-in-js - выбери свой
    https://github.com/andreipfeiffer/css-in-js
    Ответ написан
    Комментировать
  • Как сделать синхронный scroll на react?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    1) В useEffect добавляем event listener на scroll у window
    2) Читаем в обработчике window.scrollY, записываем куда хотим
    3) Не забываем удалить листенер при анмаунте компонента (return в useEffect)
    Ответ написан
    Комментировать
  • Как правильно использовать useSelector и store.getState?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    В Redux Style Guide рекомендуют 2-й вариант
    https://redux.js.org/style-guide/style-guide#call-...
    Ответ написан
    3 комментария
  • Как реализовать логику смены на темную тему в приложении React?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    React от обычного сайта почти не отличается (если не использовать подходы css-in-js) - т.е. так же верстаем адаптив с media и импортим css файлики в наши компоненты.

    Подключать разные файлы - можно, но неудобно будет поддерживать.

    По тёмной теме вариантов много (не все про реакт):
    0) Дешево и сердито, через filter. Выглядит кривовато, но максимально просто.
    https://dev.to/jamiepo/go-dark-mode-with-css-filte...
    1) Использовать CSS variables и при изменении менять глобально класс для html. Текущую тему хранить в react context, например.
    https://css-tricks.com/a-complete-guide-to-dark-mo...
    https://medium.com/swlh/setting-up-light-and-dark-...
    2) Для некоторых решений css-in-js есть свои подходы.
    Для styled components, например https://styled-components.com/docs/advanced#theming
    Ответ написан
    2 комментария
  • Как включить decorators-legacy в react-create-app?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Из-коробки - никак.
    https://create-react-app.dev/docs/can-i-use-decorators/
    Декораторы, которые используются mobx - это стандарт, который не утвердили и его будут сильно переделывать.
    Т.е. использовать их не рекомендуется и последняя версия mobx умеет работать без них.

    Если всё-таки хочется - нужно модифицировать конфиг babel и добавить туда плагин декораторов.
    2 пути:
    - сделать eject и модифицировать конфиг вебпака
    - запускать CRA через обертку, которая будет модифицировать конфиг вебпака (например react-app-rewired / react-scripts / craco)

    https://github.com/gsoft-inc/craco/blob/master/rec...
    Ответ написан
    Комментировать
  • Где хранить большой массив объектов в реакт приложении?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Мой взгляд, на истину не претендую:

    Я сторонник того, что на клиенте вообще не стоит хранить большие объемы данных. Т.е. запрашивает только те, которые нам нужны для работы/отображения в конкретный момент. Все фильтры/сортировка/пагинация на стороне сервера. Понятно, что это не всегда возможно, поэтому идем дальше...

    В хранении большого объема данных в редаксе не вижу ничего плохого, если они редко меняются. Если часто - неприятно, нужно поддерживать иммутабельность, затраты на garbage collector.
    Плюсы - быстрый доступ до данных, т.к. хранятся они в памяти.
    Минусы - поддержка иммутабельности и затраты на память.

    Если уж отходить от редакса - можно воспользоваться каким-то стором на основе мутабельных объектов, например mobx.

    Если всё это держать в памяти не хочется - то действительно можно взять IndexedDB. Хранится на диске, между перезагрузками сохраняется, асинхронное апи, есть индексы по полям. Нужно учесть, что на браузерах в режиме инкогнито может не работать или работать ограниченно (для предотвращения отслеживания).

    Ну и, конечно, вопрос в объеме данных. Просто 2к объектов - не то, чтобы сильно много. Вопрос, насколько тяжелых объектов.
    Ответ написан
    2 комментария
  • Примеры приложений MERN стека?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Вообще удобно смотреть по realworld app - там стандартизован интерфейс, есть разные имплементации фронтов и бэка
    https://codebase.show/projects/realworld
    Бэк по nodejs+mongo там сейчас не поддерживается.
    Но ознакомиться можно тут: https://github.com/gothinkster/node-express-realwo...
    Впрочем есть свежий пример на базе SQL БД: https://github.com/Varun-Hegde/Conduit_NodeJS
    С реактом там 3 варианта на выбор
    Ответ написан
    1 комментарий
  • Безопасно ли использовать легаси библиотеки рекакт?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    По сути, ничего криминального в использовании устаревших методов нет.
    Но нужно учитывать, что такая библиотека может осложнить переход на следующую версию react.
    Ну и да, при желании библиотеку можно форкнуть и доработать.

    Стоит или нет - вопрос, сколько времени/сил она сэкономит и нет ли других решений данной задачи.
    Ответ написан
    Комментировать
  • Как подключить изображение в Create React App?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Кладем картинку в папку public и пути до картинки прописываем %PUBLIC_URL%/name-of-your-image.png
    Ответ написан
  • Next.js + React/Redux как правильно сделать?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Есть официальный пример на https://github.com/zeit/next.js/tree/canary/exampl...
    По сути, в Provider мы оборачиваем приложение в _app.js , который является оберткой для компонент-страниц
    Ответ написан
    Комментировать