:root для глобального доступа или внутри других селекторов для локального использования.
:root {
--main-color: #3498db; /* Объявление переменной */
}
.element {
background-color: var(--main-color); /* Использование переменной */
}
Переменные можно переопределять внутри других селекторов, что делает их гибкими для адаптации стилей под разные элементы. Для доступа к значению переменной используется функция
var().Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
useCallback возвращает мемоизированную версию функции, которая изменяется только при изменении значений в массиве зависимостей. Это помогает избежать лишних ререндеров, когда функция передается в дочерние компоненты.
const memoizedCallback = useCallback(() => {
doSomething(a, b);
}, [a, b]);
В примере функция
doSomething будет пересоздана только при изменении a или b. Если массив зависимостей пуст, функция создается один раз и не изменяется.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤4👍1
lang в теге <html>. Этот атрибут помогает браузерам и поисковым системам определить язык содержимого страницы.
<html lang="ru">
В примере указан русский язык. Для других языков используются соответствующие коды, например
en для английского или es для испанского. Это важно для accessibility и SEO.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥5❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
this в JavaScript определяет, к какому объекту относится выполняемая функция. Значение this зависит от того, как функция вызывается: в методе объекта this ссылается на сам объект, в обычной функции — на глобальный объект (или undefined в строгом режиме).
const obj = {
value: 42,
method() {
console.log(this.value); // this ссылается на obj
}
};
obj.method();
При использовании стрелочных функций
this берется из внешнего контекста, так как они не имеют собственного this.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1🔥1
visibility: hidden и display: none заключается в том, как они скрывают элементы на странице.visibility: hidden делает элемент невидимым, но он продолжает занимать место в документе. Элемент остается частью потока, и его размеры влияют на расположение других элементов.
.element {
visibility: hidden; /* Элемент невидим, но место остается */
}
display: none полностью удаляет элемент из потока документа. Элемент не отображается и не занимает место, как будто его нет в DOM.
.element {
display: none; /* Элемент полностью удаляется из потока */
}
Выбор между ними зависит от задачи: если нужно скрыть элемент, но сохранить его место, используется
visibility: hidden. Если элемент нужно полностью убрать из потока, применяется display: none.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
React.memo для функциональных компонентов или PureComponent для классовых. Эти инструменты позволяют избежать рендера, если пропсы и состояние не изменились.
const MyComponent = React.memo(({ prop1, prop2 }) => {
return <div>{prop1} {prop2}</div>;
});
Для более сложных случаев можно использовать хук
useMemo, чтобы мемоизировать вычисляемые значения, и useCallback, чтобы сохранить ссылки на функции между рендерами. Это уменьшает количество повторных вычислений и рендеров.
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
const memoizedCallback = useCallback(() => doSomething(a, b), [a, b]);
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🤔1
hasOwnProperty или оператор in.
const obj = { key: 'value' };
// Проверка с помощью hasOwnProperty
if (obj.hasOwnProperty('key')) {
console.log('Свойство существует');
}
// Проверка с помощью оператора in
if ('key' in obj) {
console.log('Свойство существует');
}
Разница между ними в том, что
hasOwnProperty проверяет только собственные свойства объекта, игнорируя унаследованные, а оператор in проверяет как собственные, так и унаследованные свойства. Выбор зависит от задачи.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
git checkout <branch-name>. Если ветка существует, она будет активирована, а рабочая директория обновится до состояния этой ветки.
git checkout feature-branch
Для создания и переключения на новую ветку одновременно можно добавить флаг
-b.
git checkout -b new-feature-branch
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
React.lazy позволяет лениво загружать компоненты, что полезно для оптимизации производительности приложения. Он используется для динамического импорта компонентов, которые загружаются только при необходимости.
const LazyComponent = React.lazy(() => import('./LazyComponent'));
Для работы с лениво загружаемыми компонентами требуется обернуть их в
Suspense, чтобы указать запасной контент (например, лоадер) на время загрузки.
<Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</Suspense>
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9💯3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
declare module 'some-library' {
export function someFunction(): void;
}
Такие файлы необходимы при работе с библиотеками, которые не имеют встроенной поддержки TypeScript, или для расширения типов существующих модулей.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Пример на SCSS:
$primary-color: #3498db;
.button {
background-color: $primary-color;
&:hover {
background-color: darken($primary-color, 10%);
}
}
- Переменная
$primary-color хранит цвет, а функция darken() затемняет его. - Вложенность позволяет группировать стили, улучшая читаемость.
Популярные препроцессоры: SASS, LESS, Stylus. Они компилируются в стандартный CSS, который понимают браузеры.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Пример с переменными:
console.log(x); // undefined
var x = 5;
- Переменные, объявленные через
var, поднимаются, но их значение инициализируется как undefined. Пример с функциями:
foo(); // "Hello"
function foo() {
console.log("Hello");
}
- Объявления функций поднимаются полностью, поэтому их можно вызывать до объявления.
Hoisting не применяется к
let и const, которые остаются в "временной мертвой зоне" до объявления.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2👀1
Для создания портала используется
ReactDOM.createPortal. Первый аргумент — это React-элемент, который нужно отрендерить, а второй — DOM-узел, куда будет вставлен элемент.
import ReactDOM from 'react-dom';
function Modal({ children }) {
return ReactDOM.createPortal(
<div className="modal">
{children}
</div>,
document.getElementById('modal-root')
);
}
В этом примере компонент
Modal рендерится в элемент с id modal-root, который может находиться вне основного дерева компонентов. Это позволяет управлять слоями интерфейса независимо от основной структуры приложения.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1