Telegram Web
Сохранение данных формы в React: современный подход с Nuqs

В веб-разработке часто требуется сохранять состояние форм, чтобы предотвратить потерю данных при обновлении страницы или поделиться заполненной формой с другими. Традиционные методы, такие как localStorage, имеют ограничения, включая невозможность совместного использования данных и отсутствие встроенной валидации. Nuqs предлагает современное решение, позволяя сохранять состояние формы в URL с поддержкой типизации и валидации. Это упрощает обмен данными и устраняет необходимость в серверной инфраструктуре. Если вы хотите улучшить управление состоянием форм в своих React-приложениях, ознакомьтесь с возможностями Nuqs.

👉 @sWebDev
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Anime.js hover effect

Анимация при наведении на Anime.js.

👉 @sWebDev
👍8
Vanilla-tilt.js

Vanilla-tilt.js — это легковесная библиотека, позволяющая добавлять эффект 3D-наклона к элементам на странице. Она реагирует на движения мыши, создавая плавные анимации без лишних зависимостей.

👉 @sWebDev
👍3
Какой первый аргумент передаётся в FormControl?

Что передаётся в FormControl первым аргументом?

Забыли? Вернитесь к посту от 03.03.2025.

👉 @sWebDev
👍2
Что передаётся в FormControl первым аргументом?
Anonymous Quiz
43%
Название поля.
14%
Тип данных.
12%
Валидатор.
31%
Начальное значение.
👍4
Если джун — это нейросеть, то его база данных...

👍 – Stack Overflow.

❤️ – Код с курсов по веб-разработке.

👉 @sWebDev | #юмор
👍84
Управление асинхронным рендерингом

Метод flushSync() позволяет немедленно обновить состояние и выполнить ререндер, обходя пакетную обработку обновлений. Это полезно, когда требуется мгновенно обновить интерфейс перед выполнением других операций, например, чтением размеров DOM.

Например, кнопка изменяет текст элемента, и нам нужно получить его новую ширину до следующего рендера:
import { useState } from "react";
import { flushSync } from "react-dom";

function Example() {
const [text, setText] = useState("Нажми меня");
const spanRef = useRef(null);

function handleClick() {
flushSync(() => {
setText("Текст изменился!");
});

console.log("Ширина:", spanRef.current.offsetWidth);
}

return (
<div>
<button onClick={handleClick}>Изменить</button>
<span ref={spanRef}>{text}</span>
</div>
);
}


flushSync() гарантирует, что offsetWidth обновится после изменения текста, а не после следующего рендера.

👉 @sWebDev
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Когда на собеседовании спрашивают, ты фронт или бек, а ты до сих пор гуглишь, как центрировать div.

👍 – Издержки универсальности!

❤️ – Я думал, это они мне скажут кто я.

👉 @sWebDev | #юмор
9👍6🤔1
Window-Engine

Window-Engine — библиотека для создания перетаскиваемых окон без зависимостей. Позволяет реализовать многозадачный интерфейс в веб-приложениях, сохраняя взаимодействие адаптивным, включая поддержку сенсорных экранов.

👉 @sWebDev
🔥4
Media is too big
VIEW IN TELEGRAM
Portal to elriel

Интерактивная анимация с порталом на Three.js.

👉 @sWebDev
👍4
API captureOwnerStack

В React появился экспериментальный API captureOwnerStack, который помогает разрабатывать более удобные ошибки. Он позволяет получить стек владельцев (Owner Stack) — список компонентов, через которые передаётся проп. Это полезно, если нужно быстро понять, какой компонент несёт ответственность за данные в сложной структуре. Работает только в режиме разработки и может измениться в будущих версиях. Если ваш код ломается, а виновника не найти, этот API поможет разобраться.

👉 @sWebDev
👍2
Media is too big
VIEW IN TELEGRAM
CPChallenge: Bugs

Анимация бабочек на Three.js.

👉 @sWebDev
🔥4👍1
ScrollSpy.js

ScrollSpy.js — это легковесная библиотека для отслеживания появления элементов в области просмотра. Она позволяет удобно активировать анимации, загружать контент или изменять состояние элементов при прокрутке страницы.

👉 @sWebDev
👍3
Работа с resolveForwardRef()

Что делает resolveForwardRef() при передаче ему объекта?

Забыли? Вернитесь к посту от 10.03.2025.

👉 @sWebDev
👍2
Есть ли способ точнее объяснить, как работает HTML?

👍 – Это идеальная визуализация.

❤️ – Даже документация так чётко не объясняет.

🤔 – Добавьте ещё пару div-ов для надёжности.

👉 @sWebDev | #юмор
🤔7👍43👎2
Принудительный ререндер в React

В React метод flushSync() немедленно обновляет состояние и ререндерит компонент, обходя пакетирование. Это полезно, когда нужно сразу отобразить изменения перед выполнением других операций, например, измерения размеров DOM-элемента.

Обычно React группирует обновления в батчи, но иногда требуется мгновенный ререндер.
import { useState, useRef } from "react";
import { flushSync } from "react-dom";

function Example() {
const [text, setText] = useState("Исходное значение");
const spanRef = useRef(null);

function handleClick() {
flushSync(() => {
setText("Обновлённое значение");
});
console.log("Ширина:", spanRef.current.offsetWidth);
}

return (
<div>
<button onClick={handleClick}>Изменить</button>
<span ref={spanRef}>{text}</span>
</div>
);
}


flushSync()
гарантирует, что offsetWidth обновится сразу после изменения текста.

👉 @sWebDev
👍31🔥1
Media is too big
VIEW IN TELEGRAM
Metaballs

Настраиваемая анимация шаров на Three.js и GSAP.

👉 @sWebDev
👍3
AI скоро сможет создавать сложные кодовые базы с нуля. Это повод волноваться?

👍 – Да, звучит серьезно!

❤️ – С нуля все могут, ты попробуй разобраться в том, что уже есть!

👉 @sWebDev | #юмор
28🔥2👍1
2025/07/10 15:54:11
Back to Top
HTML Embed Code: