Механизм spread-оператора
Что произойдет, если применить spread-оператор к значению
Посмотреть ответ.
👉 @sWebDev
Что произойдет, если применить spread-оператор к значению
false внутри объекта inline-стилей в React?Посмотреть ответ.
👉 @sWebDev
❤2
Что произойдет, если применить spread-оператор к значению false внутри объекта inline-стилей в React?
Anonymous Quiz
25%
Произойдет ошибка во время рендеринга.
34%
К элементу будет добавлен пустой атрибут style.
34%
Никакие стили не будут добавлены, React проигнорирует это значение.
6%
Будут отменены все предыдущие стили в объекте.
❤1
Отложенный вызов
Хук
Пример
👉 @sWebDev
Хук
useTimeout в React позволяет запускать функцию через заданное время. Полезно для уведомлений, подсказок или отложенных действий.import { useEffect, useRef } from 'react';
function useTimeout(callback: () => void, delay: number) {
const savedCallback = useRef(callback);
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
useEffect(() => {
if (delay === null) return;
const id = setTimeout(() => savedCallback.current(), delay);
return () => clearTimeout(id);
}, [delay]);
}Пример
useTimeout(() => setVisible(false), 3000);
👉 @sWebDev
👍2
Sticky Header
Sticky Header — это фиксированный заголовок, который остаётся видимым при прокрутке страницы. Это улучшает UX, обеспечивая постоянный доступ к навигации или ключевой информации, особенно на длинных страницах.
Рассмотрим два подхода:
1. CSS:
Добавьте класс к вашему <header>, и он будет прилипать к верхней части экрана при прокрутке.
2. JavaScript + CSS:
👉 @sWebDev | #полезные_сниппеты
Sticky Header — это фиксированный заголовок, который остаётся видимым при прокрутке страницы. Это улучшает UX, обеспечивая постоянный доступ к навигации или ключевой информации, особенно на длинных страницах.
Рассмотрим два подхода:
1. CSS:
.header {
position: sticky;
top: 0;
background: #fff;
z-index: 1000;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}Добавьте класс к вашему <header>, и он будет прилипать к верхней части экрана при прокрутке.
2. JavaScript + CSS:
const header = document.querySelector('.header');
window.addEventListener('scroll', () => {
if (window.scrollY > 0) {
header.classList.add('sticky');
} else {
header.classList.remove('sticky');
}
});.header.sticky {
position: fixed;
top: 0;
width: 100%;
background: #fff;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}👉 @sWebDev | #полезные_сниппеты
👍3
Вы пока еще не знаете JS: область видимости и замыкания
Хотите глубже понять JavaScript? Книга Кайла Симпсона из серии "Вы пока еще не знаете JS" - отличный старт. Автор честно признается: никто не знает JS полностью, но с этой книгой вы точно прокачаете свои навыки.
Книга разбирает два столпа языка: лексические области видимости (как правильно размещать переменные и функции, чтобы избежать хаоса) и замыкания (магия, которая позволяет функциям "запоминать" окружение и создавать мощные модули). Плюс, детальный разбор паттерна "Модуль" - для чистого и масштабируемого кода.
👉 @sWebDev | #книги
Хотите глубже понять JavaScript? Книга Кайла Симпсона из серии "Вы пока еще не знаете JS" - отличный старт. Автор честно признается: никто не знает JS полностью, но с этой книгой вы точно прокачаете свои навыки.
Книга разбирает два столпа языка: лексические области видимости (как правильно размещать переменные и функции, чтобы избежать хаоса) и замыкания (магия, которая позволяет функциям "запоминать" окружение и создавать мощные модули). Плюс, детальный разбор паттерна "Модуль" - для чистого и масштабируемого кода.
👉 @sWebDev | #книги
❤1
Сохранение состояния
Что обеспечивает хук
Посмотреть ответ.
👉 @sWebDev
Что обеспечивает хук
useLocalStorage, в отличие от обычного useState?Посмотреть ответ.
👉 @sWebDev
❤1
Что обеспечивает хук useLocalStorage, в отличие от обычного useState?
Anonymous Quiz
6%
Автоматическую синхронизацию состояния между разными компонентами.
91%
Сохранение состояния между сессиями браузера через localStorage.
2%
Ускоренную работу с состоянием за счет кэширования в памяти.
1%
Валидацию типов данных при изменении состояния.
👍3❤1
Оптимизация событий с помощью debounce
Иногда функция вызывается слишком часто — например, при вводе в поисковую строку или скролле страницы. Это перегружает приложение.
Пример:
Теперь запрос отправляется только через 500 мс после остановки ввода, а не при каждом нажатии клавиши.
👉 @sWebDev
Иногда функция вызывается слишком часто — например, при вводе в поисковую строку или скролле страницы. Это перегружает приложение.
useDebounce в React помогает запускать действие только после того, как пользователь перестал что-то делать.import { useEffect, useState } from "react";
function useDebounce<T>(value: T, delay: number) {
const [debounced, setDebounced] = useState(value);
useEffect(() => {
const id = setTimeout(() => setDebounced(value), delay);
return () => clearTimeout(id);
}, [value, delay]);
return debounced;
}Пример:
const [query, setQuery] = useState("");
const debouncedQuery = useDebounce(query, 500);
useEffect(() => {
if (debouncedQuery) {
fetch(`/api/search?q=${debouncedQuery}`);
}
}, [debouncedQuery]);Теперь запрос отправляется только через 500 мс после остановки ввода, а не при каждом нажатии клавиши.
👉 @sWebDev
👍3❤1