React
2.84K subscribers
305 photos
127 videos
14 files
361 links
Подборки по React js и все что с ним связано. По всем вопросам @evgenycarter
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Как загрузить файл в React

Если вы что-то создаете с помощью React, то рано или поздно столкнетесь с проблемой загрузки файлов. Не волнуйтесь, написать логику загрузки файлов в React очень просто, и в этом посте мы покажем вам, как именно это сделать.

Мы рассмотрим загрузку одного файла, загрузку нескольких файлов, а также посмотрим, как можно использовать стороннюю библиотеку, которая сделает всю работу за вас. Но сначала давайте рассмотрим загрузку одного файла в React с помощью fetch.

https://pragmaticpineapple.com/how-to-upload-file-in-react/

✍️ @React_lib
👍4
Девять порочных практик React. Разбираем частые ошибки

Слово React регулярно слышат разработчики во всем мире. С момента своего создания эта библиотека стала невероятно популярной. Одно из главных преимуществ React в том, что она крайне вариативна в использовании, и это при определенных подходах делает ее довольно мощной и простой в освоении. Однако излишняя гибкость также является минусом: нередко программисты выбирают порочные практики и неверные методы работы с React.

Rus https://habr.com/ru/companies/ncloudtech/articles/685400/

Eng https://cult.honeypot.io/reads/bad-react-habits-to-kick/

✍️ @React_lib
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Избегайте смешивания бизнес-логики с компонентами React.

Вместо этого создавайте слои абстракции, которые взаимодействуют с ними.

✍️ @React_lib
👍11
Ответы в блоге: Мой опыт перехода пакетов на ESM

Последние 8 с лишним лет экосистема JS медленно переходила к использованию ES-модулей ("ESM") в качестве стандартного подхода для публикации и использования JS-кода. Подобно переходу Python 2->3, это было невероятно сложно и болезненно.

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

В начале этого года я начал работать над тем, чтобы обновить форматирование пакетов для библиотек семейства Redux, чтобы обеспечить им "полную совместимость с ESM". Кажется, я наконец-то придумал набор конфигураций, которые, похоже, работают достаточно хорошо, но это было нелегко.

https://blog.isquaredsoftware.com/2023/08/esm-modernization-lessons/

✍️ @React_lib
👍5
Построение системы дизайна с помощью веб-компонентов React

Что, если бы вы могли создать универсальную систему дизайна с помощью React и использовать ее в любом веб-приложении или фреймворке? Мы добились этого, скомпилировав React в веб-компоненты. Вот как это делается.

https://www.voorhoede.nl/en/blog/building-design-system-react-web-components/

✍️ @React_lib
👍6
Что такое react-afc

react-afc - библиотека для более простого (чем в простом react) уменьшения количества ненужных ререндеров дочерних компонентов.

Задачи и применение
В обычном react функциональный компонент вызывается каждый раз когда изменяется его состояние или пропсы, что вызывает повторное создание всех callback'ов и переменных.
Так как передаваемые данные из предыдущего и текущего рендера не равны, это порождает ререндер дочерних компонентов.

https://habr.com/ru/articles/784326/

✍️ @React_lib
2👍2💩1
8 лучших практик проектирования компонентов React.js

React - одна из самых популярных библиотек JavaScript для создания пользовательских интерфейсов, и одна из причин ее популярности - компонентно-ориентированная архитектура. React поощряет создание пользовательского интерфейса на основе многократно используемых компонентов, что позволяет разработчикам создавать сложные пользовательские интерфейсы более эффективно.

https://dev.to/blossom/8-best-practices-for-reactjs-component-design-4jn5

✍️ @React_lib
👍5
Используйте createStateContext для совместного использования хука useState

Несмотря на то, что многие превозносят UseContext в React как решение для управления состоянием, на самом деле он не имеет никакого отношения к управлению состоянием.

React Context - это инъекция зависимостей. Вы предоставляете значение компоненту-обертке, а затем любой последующий компонент может использовать это значение через хук useContext.

import React, { useContext } from "react"
export function createStateContext<T>() {
const StateContext = React.createContext<
| undefined
| Readonly<[T, React.Dispatch<React.SetStateAction<T>>]>
>(undefined)
function useStateContext() {
const tuple = useContext(StateContext)
if (tuple === undefined) {
throw new Error(
`use${StateContext.displayName} must be used within a ${StateContext.displayName}Provider`,
)
}
return tuple
}
return [StateContext, useStateContext] as const
}


https://www.jacobparis.com/content/use-state-context

✍️ @React_lib
👍4
React Suspense в трех различных архитектурах

React Suspense прошел странный путь: в течение многих лет он мало использовался и считался малопригодным, просто причудливым способом отображения состояния загрузки. Однако с недавним выходом React 18 Suspense предоставляет целый набор новых преимуществ, которые заслуживают того, чтобы взглянуть на них еще раз. К сожалению, эти преимущества могут варьироваться от неинтересных до эзотерических и существенно зависят от архитектуры вашего приложения. Давайте рассмотрим три наиболее распространенные на сегодняшний день архитектуры рендеринга и то, какую роль в них может сыграть React Suspense.

Client-side rendering: Показывайте фаллбэк во время загрузки React.lazy; декларативно обрабатывайте состояния загрузки/ошибок при получении данных с помощью suspense-совместимого фреймворка.

Server-side rendering: Все вышеперечисленное + серверные компоненты, обернутые в <Suspense />, выборочно гидрируются на клиенте.

Server components: Все вышеперечисленное + асинхронные серверные компоненты, обернутые в <Suspense />, передаются клиенту поэтапно: сначала это fallback, затем - финальный контент.

А теперь более глубокое погружение!

https://elanmed.dev/blog/suspense-in-different-architectures

✍️ @React_lib
👍5
Manning.React.Quickly.2nd.Edition.pdf
29.2 MB
React Quickly, 2nd Edition
Автор: Azat Mardan (2023)

Это практическое руководство по React для веб-разработчиков. Опираясь на более чем 100 тщательно подобранных и четко объясненных примеров, вы научитесь разрабатывать на React, используя уже имеющиеся у вас навыки работы с JavaScript и веб-разработки. Полностью переработанное второе издание содержит множество новых тем, включая главы, посвященные функциональным компонентам, генерации статических сайтов и CSS в JS. Кроме того, вам понравятся новые примеры проектов - от интерактивного меню до книжного интернет-магазина! Все примеры соответствуют лучшим практикам веб-доступности, чтобы сделать ваши приложения открытыми для всех.

✍️ @React_lib
👍3
⚛️ Я просмотрел бесчисленное количество PRs, и я вижу эту ошибку в React снова и снова.

Объект ref не уведомляет об изменении значения ref в useEffect.

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

✍️ @React_lib
👍5🔥1🫡1
Любимая задачка на знание React

Всем привет! Меня зовут Олег и я fullstack-программист в компании Тензор. Опыт в разработке, без малого, 20 лет (как-то раз батя спаял на кухне ZX Spectrum и все заверте..., сам не понял как так вышло). В данный момент являюсь тимлидом собственной команды разработчиков, которая периодически нуждается в пополнении толковыми программистами.

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

Наша команда занимается разработкой веб-приложения на React. Соответственно, мне важно найти программистов уверенно владеющих основами (!) этого фреймворка. Есть много способов проверки компетенций на собеседовании, один из любимых - задача по написанию hook для загрузки данных.

Если вы тоже в вечном поиске классных фронтендеров или сами часто проходите собесы - велком в эту статью :)

https://habr.com/ru/companies/tensor/articles/779718/

✍️ @React_lib
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
⚛️ Совет по React 💡

Ввод возвращаемых значений пользовательских хуков с помощью TypeScript

✍️ @React_lib
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
⚛️ Совет по React 💡

Напишите более качественное и безопасное условие с использованием сопоставления шаблонов

✍️ @React_lib
👍6👎1
This media is not supported in your browser
VIEW IN TELEGRAM
⚛️ Совет по React 💡

Как типизировать динамические компоненты (например, таблицы) с использованием TypeScript

✍️ @React_lib
👍4👎2
UseMemo overdose

Недавно меня спросили, когда следует использовать хук useMemo, и этот вопрос заставил меня задуматься и поразмыслить. Постепенно я понял, что у меня появилась привычка использовать хук useMemo практически для всего, и я не мог объяснить, почему я это делаю. И особенно меня встревожило то, что после разговора с другим фронтенд-инженером я понял, что не только я так делаю. Это означает, что разработчики склонны чрезмерно использовать хук useMemo и даже не могут адекватно объяснить, почему они это делают. В этом посте мы узнаем, когда стоит использовать хук useMemo, а когда нет.

https://edvins.io/usememo-overdose

✍️ @React_lib
👍91
This media is not supported in your browser
VIEW IN TELEGRAM
⚛️ Prop drilling в React затрудняет отладку и сопровождение кода

Иногда быстрое решение заключается в переосмыслении композиции ваших компонентов

✍️ @React_lib
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Как мы создали GPT-агента 🤖, который генерирует полнофункциональные веб-приложения на React и Node.js

Мы создали GPT Web App Generator, который позволяет кратко описать веб-приложение, которое вы хотите создать, и в считанные минуты прямо перед вами будет сгенерирована полностековая кодовая база, написанная на React, Node.js, Prisma и Wasp, которую можно загрузить и запустить локально!

Мы начали этот проект в качестве эксперимента, чтобы проверить, насколько хорошо мы можем использовать GPT для генерации полнофункциональных веб-приложений на Wasp, фреймворке JS для веб-приложений с открытым исходным кодом, который мы разрабатываем. С момента запуска мы сгенерировали более 3000 приложений всего за пару дней!

https://dev.to/wasp/how-we-built-a-gpt-code-agent-that-generates-full-stack-web-apps-in-react-nodejs-explained-simply-4f9

✍️ @React_lib
👍4👎1🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
Создание компонента тоста

В начале этого года я создал библиотеку Toast для React под названием Sonner. В этой статье я расскажу вам о некоторых уроках и ошибках, которые я совершил при ее создании.

https://emilkowal.ski/ui/building-a-toast-component

✍️ @React_lib
👍3
Создание UI-компонентов React на продвинутом уровне

React  —  хорошая библиотека. Так давайте сделаем ее еще лучше, создавая многоразовые компоненты на высокопрофессиональном уровне.
Для использования этого руководства достаточно базовых знаний о React, TypeScript и Tailwind CSS.
В качестве примера поработаем с button, но принципы, которым будем следовать здесь, применимы к любому HTML-тегу.

const Button = ({children, className}) => {
return (
<button className={className}>{children}</button>
)
}

Приведенный выше код работает, но что, если понадобится ввести ARIA (accessible rich internet application attribute  —  доступные полнофункциональные интернет-приложения), ссылки или любые другие свойства обычного тега button?

https://medium.com/@emmanuelalozie69/build-react-ui-components-like-a-senior-developer-21c7b22408d2

✍️ @React_lib
👍3