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
.container {
display: flex;
justify-content: center; /* Центрирование по горизонтали */
align-items: center; /* Центрирование по вертикали */
height: 100vh; /* Высота контейнера на весь экран */
}
Другой способ — с помощью Grid:
.container {
display: grid;
place-items: center; /* Центрирование по горизонтали и вертикали */
height: 100vh; /* Высота контейнера на весь экран */
}
Для абсолютно позиционированных элементов подойдет следующий подход:
.element {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Каждый из этих методов обеспечивает точное центрирование элемента в зависимости от требований и контекста.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Для массивов:
const numbers = [1, 2, 3];
const [first, second] = numbers;
// first = 1, second = 2
Элементы массива присваиваются переменным по порядку.
Для объектов:
const user = { name: 'Alice', age: 25 };
const { name, age } = user;
// name = 'Alice', age = 25
Имена переменных должны совпадать с ключами объекта. Можно использовать псевдонимы:
const { name: userName, age: userAge } = user;
// userName = 'Alice', userAge = 25
Деструктуризация часто используется для извлечения значений из параметров функций или возвращаемых данных.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
1. Типизация пропсов и состояния
Позволяет явно указать типы для пропсов и состояния компонентов, что уменьшает вероятность ошибок.
interface Props {
name: string;
age: number;
}
const User: React.FC<Props> = ({ name, age }) => <div>{name}, {age}</div>;
2. Автодополнение и подсказки
Редакторы кода предоставляют автодополнение и подсказки, что ускоряет разработку и уменьшает количество опечаток.
3. Раннее обнаружение ошибок
Ошибки типов выявляются на этапе компиляции, что снижает вероятность багов в рантайме.
4. Улучшение читаемости кода
Типы делают код более понятным, особенно в больших проектах или при работе в команде.
5. Интеграция с экосистемой React
TypeScript поддерживает типы для хуков, контекста и других фич React, что упрощает их использование.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
action и method определяют, как данные будут отправлены на сервер.action
Указывает URL, на который отправляются данные формы. Это может быть путь к серверному скрипту, который обрабатывает данные.
<form action="/submit-form" method="post">
В данном случае данные формы будут отправлены на
/submit-form.method
Определяет HTTP-метод, используемый для отправки данных. Основные значения:
-
GET: Данные добавляются в URL как параметры запроса. Подходит для нечувствительных данных.-
POST: Данные отправляются в теле запроса. Используется для отправки конфиденциальной информации или больших объемов данных.
<form action="/search" method="get">
Здесь данные формы будут отправлены методом GET, и их можно увидеть в адресной строке.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4