Синхронизация состояния компонента с URL
Кастомный хук
Для обновления применяется
👉 @sWebDev
Кастомный хук
useQueryState
инкапсулирует логику синхронизации состояния с URL-параметрами. Данный подход объединяет useState
и useSearchParams
, очищая код компонента и беря начальное значение из URL.Для обновления применяется
useLayoutEffect
, гарантируя изменение адресной строки до отрисовки браузером и исключая визуальную рассинхронизацию.import { useState, useLayoutEffect } from 'react';
import { useSearchParams } from 'react-router-dom';
function useQueryState(queryKey, initialValue) {
const [searchParams, setSearchParams] = useSearchParams();
const [value, setValue] = useState(
searchParams.get(queryKey) ?? initialValue
);
useLayoutEffect(() => {
const newParams = new URLSearchParams(searchParams);
newParams.set(queryKey, value);
setSearchParams(newParams);
}, [value, queryKey, searchParams, setSearchParams]);
return [value, setValue];
}
👉 @sWebDev
👍3
Dockview
Dockview — JavaScript-библиотека для создания сложных панельных интерфейсов, как в современных IDE. Поддерживает перемещаемые, стыкуемые и изменяемые по размеру панели. Подходит для разработки веб-приложений, где требуется гибкая и настраиваемая рабочая область.
👉 @sWebDev
Dockview — JavaScript-библиотека для создания сложных панельных интерфейсов, как в современных IDE. Поддерживает перемещаемые, стыкуемые и изменяемые по размеру панели. Подходит для разработки веб-приложений, где требуется гибкая и настраиваемая рабочая область.
👉 @sWebDev
❤2
Media is too big
VIEW IN TELEGRAM
Glow effect to LineBasicMaterial without bloom
Эффект свечения для линий без Bloom-фильтра в Three.js.
👉 @sWebDev
Эффект свечения для линий без Bloom-фильтра в Three.js.
👉 @sWebDev
❤3👍1
Оптимизация TypeScript-типов в больших проектах
В крупных проектах проверка типов в TypeScript может стать серьёзным узким местом, замедляя сборку и работу IDE. Статья разбирает неочевидные проблемы производительности, связанные со сложными типами, и предлагает конкретные подходы к их оптимизации. Полезно для тех, кто работает с большими кодовыми базами и ищет способы ускорить работу с TypeScript.
👉 @web_craft | #frontend
В крупных проектах проверка типов в TypeScript может стать серьёзным узким местом, замедляя сборку и работу IDE. Статья разбирает неочевидные проблемы производительности, связанные со сложными типами, и предлагает конкретные подходы к их оптимизации. Полезно для тех, кто работает с большими кодовыми базами и ищет способы ускорить работу с TypeScript.
👉 @web_craft | #frontend
❤2👎1
Probot
Probot — фреймворк для создания GitHub-приложений на JavaScript. Предназначен для автоматизации рабочих процессов и задач в репозиториях, например, для комментирования pull-реквестов или проверки стиля кода. Подходит для команд и разработчиков, стремящихся упростить управление репозиториями и рутинные операции.
👉 @sWebDev
Probot — фреймворк для создания GitHub-приложений на JavaScript. Предназначен для автоматизации рабочих процессов и задач в репозиториях, например, для комментирования pull-реквестов или проверки стиля кода. Подходит для команд и разработчиков, стремящихся упростить управление репозиториями и рутинные операции.
👉 @sWebDev
❤2
Механизм защиты данных в RSC
Какую проблему решают функции
Забыли? Вернитесь к посту от30.06.2025 .
👉 @sWebDev
Какую проблему решают функции
taintObjectReference
и taintUniqueValue
?Забыли? Вернитесь к посту от
👉 @sWebDev
❤2
Какую проблему решают функции taintObjectReference и taintUniqueValue?
Anonymous Quiz
12%
Ускоряют рендеринг серверных компонентов.
20%
Оптимизируют запросы к базе данных.
12%
Упрощают управление состоянием на сервере.
56%
Предотвращают случайную передачу чувствительных данных на клиент.
❤2👍1
Уточнение типов для дочерних элементов
При типизации
Он представляет собой только результат вызова
👉 @sWebDev
При типизации
children
в React-компонентах часто используют ReactNode
. Данный тип, принимающий JSX, строки, числа и null
, достаточно гибкий. Однако для создания более строгого API лучше подходит ReactElement
.Он представляет собой только результат вызова
React.createElement
, исключая примитивные типы вроде строк или чисел. Данный подход полезен для компонентов-оберток, которые должны работать только с другими React-компонентами, например, для клонирования или анализа их пропсов, делая их поведение более предсказуемым.import { ReactNode, ReactElement } from 'react';
// ReactNode принимает почти любые значения
const FlexibleContainer = ({ children }: { children: ReactNode }) => {
return <div>{children}</div>;
};
// ReactElement принимает только React-элементы
const StrictContainer = ({ children }: { children: ReactElement }) => {
return <div>{children}</div>;
};
👉 @sWebDev
👍4
Es-toolkit
Es-toolkit — утилитарная JavaScript-библиотека, созданная как современная альтернатива Lodash. Содержит набор полезных функций (
👉 @sWebDev
Es-toolkit — утилитарная JavaScript-библиотека, созданная как современная альтернатива Lodash. Содержит набор полезных функций (
debounce
, chunk
, sum
и другие), но с фокусом на производительность и малый размер. 👉 @sWebDev
👍4
Подводные камни URL Search Params в React
Хранение состояния в URL-параметрах кажется простым решением, но под поверхностью скрывается масса проблем. Статья рассматривает неочевидные сложности: от отсутствия типобезопасности и валидации до управления частотой обновлений и миграции схем.
👉 @sWebDev
Хранение состояния в URL-параметрах кажется простым решением, но под поверхностью скрывается масса проблем. Статья рассматривает неочевидные сложности: от отсутствия типобезопасности и валидации до управления частотой обновлений и миграции схем.
👉 @sWebDev
❤2
Swagger UI
Работать с чужим API вслепую — долго и неудобно. Swagger UI решает эту проблему, автоматически создавая интерактивную документацию из спецификации OpenAPI. Инструмент генерирует наглядный интерфейс, где можно не только изучить все эндпоинты, но и сразу отправить тестовые запросы.
👉 @sWebDev
Работать с чужим API вслепую — долго и неудобно. Swagger UI решает эту проблему, автоматически создавая интерактивную документацию из спецификации OpenAPI. Инструмент генерирует наглядный интерфейс, где можно не только изучить все эндпоинты, но и сразу отправить тестовые запросы.
👉 @sWebDev
❤2