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
Если вы что-то создаете с помощью 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
Слово 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
Вместо этого создавайте слои абстракции, которые взаимодействуют с ними.
✍️ @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
Последние 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
Что, если бы вы могли создать универсальную систему дизайна с помощью 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
react-afc - библиотека для более простого (чем в простом react) уменьшения количества ненужных ререндеров дочерних компонентов.
Задачи и применение
В обычном react функциональный компонент вызывается каждый раз когда изменяется его состояние или пропсы, что вызывает повторное создание всех callback'ов и переменных.
Так как передаваемые данные из предыдущего и текущего рендера не равны, это порождает ререндер дочерних компонентов.
https://habr.com/ru/articles/784326/
✍️ @React_lib
Хабр
Что такое react-afc
react-afc - библиотека для более простого (чем в простом react ) уменьшения количества ненужных ререндеров дочерних компонентов. Задачи и применение В обычном react функциональный компонент вызывается...
❤2👍2💩1
8 лучших практик проектирования компонентов React.js
React - одна из самых популярных библиотек JavaScript для создания пользовательских интерфейсов, и одна из причин ее популярности - компонентно-ориентированная архитектура. React поощряет создание пользовательского интерфейса на основе многократно используемых компонентов, что позволяет разработчикам создавать сложные пользовательские интерфейсы более эффективно.
https://dev.to/blossom/8-best-practices-for-reactjs-component-design-4jn5
✍️ @React_lib
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.
https://www.jacobparis.com/content/use-state-context
✍️ @React_lib
Несмотря на то, что многие превозносят 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
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
Автор: Azat Mardan (2023)
Это практическое руководство по React для веб-разработчиков. Опираясь на более чем 100 тщательно подобранных и четко объясненных примеров, вы научитесь разрабатывать на React, используя уже имеющиеся у вас навыки работы с JavaScript и веб-разработки. Полностью переработанное второе издание содержит множество новых тем, включая главы, посвященные функциональным компонентам, генерации статических сайтов и CSS в JS. Кроме того, вам понравятся новые примеры проектов - от интерактивного меню до книжного интернет-магазина! Все примеры соответствуют лучшим практикам веб-доступности, чтобы сделать ваши приложения открытыми для всех.
✍️ @React_lib
👍3
⚛️ Я просмотрел бесчисленное количество PRs, и я вижу эту ошибку в React снова и снова.
❌ Объект ref не уведомляет об изменении значения ref в useEffect.
✅ Вместо этого используйте функцию обратного вызова ref, чтобы всегда получать последнее значение ref.
✍️ @React_lib
❌ Объект 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
Всем привет! Меня зовут Олег и я 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
Ввод возвращаемых значений пользовательских хуков с помощью TypeScript
✍️ @React_lib
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
⚛️ Совет по React 💡
Напишите более качественное и безопасное условие с использованием сопоставления шаблонов
✍️ @React_lib
Напишите более качественное и безопасное условие с использованием сопоставления шаблонов
✍️ @React_lib
👍6👎1
This media is not supported in your browser
VIEW IN TELEGRAM
⚛️ Совет по React 💡
Как типизировать динамические компоненты (например, таблицы) с использованием TypeScript
✍️ @React_lib
Как типизировать динамические компоненты (например, таблицы) с использованием TypeScript
✍️ @React_lib
👍4👎2
UseMemo overdose
Недавно меня спросили, когда следует использовать хук
https://edvins.io/usememo-overdose
✍️ @React_lib
Недавно меня спросили, когда следует использовать хук
useMemo
, и этот вопрос заставил меня задуматься и поразмыслить. Постепенно я понял, что у меня появилась привычка использовать хук useMemo
практически для всего, и я не мог объяснить, почему я это делаю. И особенно меня встревожило то, что после разговора с другим фронтенд-инженером я понял, что не только я так делаю. Это означает, что разработчики склонны чрезмерно использовать хук useMemo и даже не могут адекватно объяснить, почему они это делают. В этом посте мы узнаем, когда стоит использовать хук useMemo
, а когда нет.https://edvins.io/usememo-overdose
✍️ @React_lib
👍9❤1
This media is not supported in your browser
VIEW IN TELEGRAM
⚛️ Prop drilling в React затрудняет отладку и сопровождение кода
Иногда быстрое решение заключается в переосмыслении композиции ваших компонентов
✍️ @React_lib
Иногда быстрое решение заключается в переосмыслении композиции ваших компонентов
✍️ @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
Мы создали 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
В начале этого года я создал библиотеку Toast для React под названием Sonner. В этой статье я расскажу вам о некоторых уроках и ошибках, которые я совершил при ее создании.
https://emilkowal.ski/ui/building-a-toast-component
✍️ @React_lib
👍3
Создание UI-компонентов React на продвинутом уровне
React — хорошая библиотека. Так давайте сделаем ее еще лучше, создавая многоразовые компоненты на высокопрофессиональном уровне.
Для использования этого руководства достаточно базовых знаний о React, TypeScript и Tailwind CSS.
В качестве примера поработаем с button, но принципы, которым будем следовать здесь, применимы к любому HTML-тегу.
Приведенный выше код работает, но что, если понадобится ввести ARIA (accessible rich internet application attribute — доступные полнофункциональные интернет-приложения), ссылки или любые другие свойства обычного тега button?
https://medium.com/@emmanuelalozie69/build-react-ui-components-like-a-senior-developer-21c7b22408d2
✍️ @React_lib
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