Удобный инструмент для React-разработчиков, который визуально показывает, какие компоненты тормозят ваше приложение.
Главные фичи:
— Не требует изменений в коде
— Подсвечивает компоненты, которые нужно оптимизировать
— Работает везде: script tag, npm, Next.js, Vite, Remix
Просто добавьте один script tag:
<script src="//unpkg.com/react-scan/dist/auto.global.js"></script>
#stack #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🥰3👏2
Типичный кейс: побочный эффект не влияет на layout.
import { useEffect, useState } from "react";
export function Counter() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `Кликов: ${count}`;
}, [count]);
return (
<button onClick={() => setCount(c => c + 1)}>
Клик: {count}
</button>
);
}
Почему useEffect:
• отрисовка не зависит от эффекта
• возможна задержка без визуальных артефактов
Типичный кейс: нужно измерить DOM до того, как пользователь увидит экран.
import { useLayoutEffect, useRef, useState } from "react";
export function Box() {
const ref = useRef(null);
const [width, setWidth] = useState(0);
useLayoutEffect(() => {
setWidth(ref.current.getBoundingClientRect().width);
}, []);
return (
<>
<div
ref={ref}
style={{ width: 120, height: 40, background: "red" }}
/>
<p>Ширина: {width}px</p>
</>
);
}
Почему useLayoutEffect:
• getBoundingClientRect должен выполниться до paint
• иначе возможен визуальный “прыжок” интерфейса
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰9❤4👍2
useEffect + fetch выглядит просто, но в реальном приложении быстро обрастает ручной логикой:
Современный подход — TanStack Query. Он берёт на себя работу с серверным состоянием: кэш, ретраи, автоотмену и обновление данных без ручной рутины.
для загрузки серверных данных лучше использовать специализированные библиотеки, которые берут на себя кэширование, дедупликацию и управление асинхронным состоянием.
#hotfix #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤2👍1🥰1
useEffect(() => {
initAnalytics();
}, []);
На вид — инициализация один раз.
— React в StrictMode выполняет дополнительный цикл
setup → cleanup → setup
— аналитика / подписки / запросы могут выполняться повторно
— баг выглядит как «только у меня локально»
Это dev-only проверка в React 18+, чтобы находить неидемпотентные сайд-эффекты и отсутствие cleanup.
useEffect(() => {
const dispose = initAnalytics(); // возвращает отписку
return () => {
dispose?.();
};
}, []);
Cleanup должен полностью зеркалить всё, что было создано в effect.
// analytics.ts
let inited = false;
export function initAnalyticsOnce() {
if (inited) return;
inited = true;
initAnalytics();
}
useEffect(() => {
initAnalyticsOnce();
}, []);
#hotfix #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥1🥰1
Иногда компонент красиво уходит со сцены… и в этот же момент внутри него обновляется контент. Это создаёт визуальный шум и ощущение «глюка», хотя React работает корректно.
#under_hood #react
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2👍1🥱1
Массивы чаще ломают состояние не ошибкой, а мутацией. Ниже — краткая шпаргалка, которая особенно полезна в React.
const added = [...items, newItem]
const removed = items.filter(x => x.id !== id)
const updated = items.map(x =>
x.id === id ? { ...x, done: true } : x
)
push, splice, sort, reverse меняют исходный массив.
const user = users.find(u => u.id === id)
const admins = users.filter(u => u.role === "admin»)
Если нужен один — используйте find. Это и быстрее, и чище по логике.
const hasError = items.some(x => !x.valid)
const allReady = items.every(x => x.ready)
Читается лучше, чем цикл с переменной-флагом.
items.includes({ id: 1 }) // почти всегда false
items.some(x => x.id === 1)
В JS объекты равны только если это одна и та же ссылка.
const copy = [...arr] // поверхностная копия
Вложенные объекты остаются по ссылке. Обновляйте их через spread на каждом уровне.
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🥰2
const items = Children.toArray(children);
Нужен, когда children надо безопасно превратить в массив и дальше обработать через slice, filter или map. Полезно в wrapper-компонентах, tabs и compound components — но без фанатизма: сам React считает Children API скорее редким и ситуативным инструментом.
Например:
const firstChild = Children.toArray(children)[0];
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4❤2🔥1
React_Cheatsheet_Zero_To_Mastery_V1.02.pdf
524.2 KB
Что внутри:
— JSX и структура React-элементов
— компоненты: props, children, условный рендеринг
— списки, memo и Context
— все ключевые хуки: от useState до useMemo
— class components и lifecycle (на случай легаси)
— error boundaries и обработка ошибок
Подойдёт новичкам как карта React и тем, кто уже работает и хочет быстрее ориентироваться.
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
4🥰6❤1😁1
ReactJSNotesForProfessionals(2).pdf
1 MB
Короткий конспект по React на 100+ страниц:
— компоненты, props, state
— формы, lifecycle, роутинг
— AJAX, производительность
— Redux, HOC, SSR, TypeScript
Это не учебник, а выжимка практики и решений из Stack Overflow.
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰7🤔2❤1
Нашли большой репозиторий с идеями React-проектов разного уровня — от простых счётчиков и Todo до SaaS Dashboard, WebRTC и AI Chat UI.
Внутри проекты разделены по уровням:
Полезно, если:
— не знаете, что сделать для портфолио
— хотите практиковать React на реальных задачах
— ищете идеи для pet-проекта
— готовитесь к frontend-собеседованиям
#stack #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🥰2🔥1
При изменении state
Чтобы избежать лишних ререндеров используют:
—
— useMemo
— useCallback
Изменение state родителя по умолчанию запускает повторный render родителя и обход его дочернего дерева.
👍 — знал/а
🔥 — стало понятнее
#career_merge #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥12🤔2❤1🥰1
В React Router 7.16.0 стабилизировали флаг v8_trailingSlashAwareDataRequests и добавили предупреждения о настройках, которые понадобятся для перехода на v8.
— useNavigation() и TypeScript-типов
— кастомных window-контекстов
— Node.js streams и backpressure
— Express-адаптера
— работы ассетов между Windows и Linux
#release_digest #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Если нужно выполнить действие сразу после появления DOM-элемента, часто можно обойтись без useEffect.
Например:
— установить фокус
— измерить размеры элемента
— подключить Observer
— инициализировать библиотеку
— меньше кода
— не нужен дополнительный рендерный цикл через useEffect
— логика находится рядом с элементом
⚠️ Но callback ref не является заменой useEffect. Для подписок, запросов и побочных эффектов по-прежнему нужен useEffect.
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2👾2🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Trees — open-source библиотека для создания файловых менеджеров и IDE-подобных проводников.
Из коробки поддерживает:
— поиск по файлам
— drag-and-drop
— выделение элементов
— Git-статусы
— вложенные директории
— навигацию с клавиатуры
— редакторов кода
— внутренних инструментов
— файловых менеджеров
— developer-платформ
#stack #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🥰3😍3
React Foundation запустил собственный сайт, а GitHub-репозиторий переехал с facebook/react на react/react.
Для разработчиков ничего не меняется в API или коде.
*Meta признана экстремистской организацией в РФ
#release_digest #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤3🤔2👍1🥰1
react hooks cheat sheet.pdf
1.1 MB
Собрали небольшой файл по основным хукам React — с примерами и быстрыми пояснениями.
Внутри:
— useState и useReducer
— useEffect и useLayoutEffect
— useContext
— useMemo и useCallback
— useRef и useImperativeHandle
— Custom Hooks
Полезно для повторения, подготовки к собеседованию и ежедневной разработки на React
#артефакт #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🥰2
330+ React Interview Questions That Can Give You a Real Edge.pdf
1.7 MB
Если готовитесь к поиску работы или хотите освежить знания, сохраните эту шпаргалку.
• JSX, компоненты, props и state;
• Hooks и жизненный цикл;
• Virtual DOM и Reconciliation;
• Context API и Redux Toolkit;
• React Router;
• оптимизация производительности;
• тестирование (Jest);
• SSR и основы Next.js;
• распространённые ошибки и лучшие практики.
#readme #react #career_merge
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🥰2
React Tips - Memoization is NOT a Performance Strategy.pdf
300.3 KB
Когда приложение начинает тормозить, многие сразу добавляют useMemo, useCallback или React.memo. На практике главный прирост производительности чаще дает архитектура компонентов.
Что действительно помогает:
🔵 держать состояние как можно ближе к месту использования;🔵 не поднимать state выше, чем это необходимо;🔵 уменьшать количество лишних ререндеров;🔵 использовать мемоизацию только там, где она действительно оправдана.
#under_hood #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍4🥰2
Хороший Data Grid помогает быстрее находить информацию, снижает количество ошибок и остается отзывчивым даже при работе с большими объемами данных.
Вот что считается хорошей практикой:
Цвета, бейджи и иконки позволяют мгновенно увидеть статус, предупреждение или критичное значение.
Цвета, отступы и типографика должны наследоваться от общей дизайн-системы, а не быть разбросаны по CSS.
Таблица должна одинаково хорошо выглядеть в светлой и темной теме, сохраняя контраст и читаемость.
Для больших наборов данных виртуализируйте строки и избегайте тяжелых инлайновых стилей и лишних перерисовок.
Поддержка клавиатурной навигации, Screen Reader, фокус-состояний и достаточного контраста — уже базовое требование.
На планшетах и небольших экранах таблица должна корректно менять ширину колонок, сохраняя удобство работы.
#blueprint #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🥰2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
3dsvg.design — бесплатный браузерный инструмент, который превращает обычные SVG, текст и простую графику в объёмные интерактивные элементы.
Можно:
— загрузить SVG или добавить текст;
— настроить глубину, освещение и положение объекта;
— сразу посмотреть результат в браузере;
— экспортировать готовый React-компонент и вставить код в проект.
Полезно для лендингов, hero-блоков и интерфейсов, где хочется добавить 3D без ручной работы с WebGL.
#stack #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥰2❤1