viewport управляет отображением веб-страницы на мобильных устройствах, определяя размер и масштаб области просмотра. Он помогает адаптировать контент под разные экраны, улучшая пользовательский опыт.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Атрибут
width=device-width устанавливает ширину страницы равной ширине экрана устройства, а initial-scale=1.0 задает начальный масштаб, обеспечивая корректное отображение.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11✍2❤1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
v-for используется для рендеринга списка элементов на основе данных массива. Она перебирает элементы массива и создает экземпляр шаблона для каждого элемента.
<ul>
<li v-for="(item, index) in items" :key="index">
{{ item }}
</li>
</ul>
Атрибут
:key помогает Vue отслеживать изменения в списке, обеспечивая эффективное обновление DOM.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥7
Date.now() возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Это удобный способ получить текущее время в виде числового значения, что полезно для измерения интервалов или работы с временными метками.
const timestamp = Date.now();
// timestamp содержит количество миллисекунд с начала эпохи Unix
Метод не создает объект
Date, что делает его более производительным по сравнению с использованием new Date().getTime(). Часто применяется для замера времени выполнения кода или генерации уникальных идентификаторов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6💯1
git merge --abort отменяет процесс слияния и вернет рабочую директорию в состояние, которое было до начала слияния. Это полезно, если в процессе возникли конфликты или слияние нужно прервать по другим причинам.
git merge --abort
Команда работает только в случае, если слияние не было завершено. После выполнения репозиторий возвращается к состоянию, в котором он находился до вызова
git merge.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤5
1. Использование тернарного оператора:
const Component = ({ isLoggedIn }) => (
isLoggedIn ? <WelcomeMessage /> : <LoginButton />
);
Если
isLoggedIn истинно, отобразится WelcomeMessage, иначе — LoginButton.2. Использование логического оператора &&:
const Component = ({ hasItems }) => (
hasItems && <ItemList />
);
Если
hasItems истинно, отобразится ItemList, иначе ничего не будет показано.3. Использование условных операторов в JSX:
const Component = ({ isLoading }) => {
if (isLoading) {
return <Spinner />;
}
return <Content />;
};
В зависимости от значения
isLoading возвращается либо Spinner, либо Content.Эти подходы позволяют гибко управлять отображением компонентов в зависимости от состояния приложения.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
<T> и заменяются конкретным типом при использовании.
function identity<T>(arg: T): T {
return arg;
}
Функция
identity принимает аргумент типа T и возвращает значение того же типа. Это позволяет использовать её с любым типом данных.
const result = identity<string>("Hello");
Здесь
T заменяется на string, и функция работает с этим типом.Дженерики полезны для создания переиспользуемого кода, который остаётся типобезопасным и гибким.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
methods компонента. Они используются для обработки событий, выполнения логики или изменения состояния компонента. Методы можно вызывать из шаблона через директивы (например, v-on) или из других методов.
export default {
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
};
В шаблоне метод вызывается через
v-on:
<button @click="increment">Увеличить счетчик</button>
Методы реагируют на изменения данных и обновляют DOM через реактивную систему Vue. Они не кэшируются, в отличие от вычисляемых свойств, и выполняются каждый раз при вызове.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
условие ? значение_если_истина : значение_если_ложь.
const isLoggedIn = true;
const message = isLoggedIn ? 'Добро пожаловать' : 'Пожалуйста, войдите';
В этом примере, если
isLoggedIn равно true, переменной message присваивается 'Добро пожаловать', иначе — 'Пожалуйста, войдите'.Тернарный оператор удобен для простых условий, но для сложной логики лучше использовать
if-else, чтобы сохранить читаемость кода.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
родитель потомок.
div p {
color: blue;
}
В этом примере все элементы
<p>, находящиеся внутри <div>, будут стилизованы синим цветом, даже если они вложены в другие элементы.Селектор потомков применяется ко всем подходящим элементам, независимо от их глубины в структуре DOM. Это отличает его от дочернего селектора (>), который выбирает только прямых потомков.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
onChange и onSubmit, позволяют отслеживать ввод данных и отправку формы.
function Form() {
const [inputValue, setInputValue] = useState('');
const handleChange = (e) => {
setInputValue(e.target.value);
};
const handleSubmit = (e) => {
e.preventDefault();
console.log('Отправлено:', inputValue);
};
return (
<form onSubmit={handleSubmit}>
<input type="text" value={inputValue} onChange={handleChange} />
<button type="submit">Отправить</button>
</form>
);
}
onChange обновляет состояние при каждом изменении ввода, а onSubmit обрабатывает отправку формы, предотвращая стандартное поведение браузера с помощью e.preventDefault().Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
<div id="host"></div>
<noscript>
const host = document.getElementById('host');
const shadowRoot = host.attachShadow({ mode: 'open' });
shadowRoot.innerHTML = `<p>Этот текст изолирован в Shadow DOM</p>`;
</noscript>
В этом примере содержимое внутри
shadowRoot изолировано от глобального DOM. Shadow DOM используется в веб-компонентах для создания независимых и переиспользуемых элементов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
<!-- Компонент с слотом -->
<template>
<div class="container">
<slot></slot>
</div>
</template>
<!-- Использование компонента -->
<MyComponent>
<p>Этот контент попадет в слот</p>
</MyComponent>
Слоты могут быть именованными, что позволяет передавать контент в разные части компонента. По умолчанию используется основной слот (<slot>), который принимает весь переданный контент.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
for...of используется для итерации по элементам итерируемых объектов, таких как массивы, строки, Map, Set и другие. В отличие от for...in, который перебирает ключи, for...of работает непосредственно со значениями.Синтаксис:
const arr = [1, 2, 3];
for (const item of arr) {
console.log(item); // Выводит 1, 2, 3
}
Цикл
for...of упрощает работу с коллекциями, исключая необходимость вручную управлять индексами. Он поддерживает break и continue для управления потоком выполнения. Подходит для работы с массивами и другими итерируемыми структурами, где важны значения элементов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
Элементы в CSS делятся на три основные категории по типу отображения:
1️⃣ Inline элементы (например,
2️⃣ Block элементы (например,
3️⃣ Inline-block элементы сочетают свойства: занимают только необходимое пространство, как inline, но поддерживают задание ширины, высоты и отступов, как block.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Frontend собеседования
inline, block и inline-block.span, a) занимают только необходимое пространство, не создают разрывов строки до и после себя. Нельзя задавать ширину, высоту или вертикальные отступы.div, p) занимают всю доступную ширину, начинаются с новой строки и поддерживают задание ширины, высоты, отступов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
useRef и createRef — это хук и функция для создания рефов в React, но они используются в разных контекстах. useRef — это хук, который возвращает мутируемый объект с свойством current. Этот объект сохраняет своё значение между рендерами и не вызывает повторный рендер при изменении. Используется в функциональных компонентах.
const inputRef = useRef(null);
// inputRef.current будет доступен после монтирования компонента
createRef — это функция, которая создаёт новый реф при каждом рендере. Используется в классовых компонентах.
class MyComponent extends React.Component {
inputRef = createRef();
// inputRef.current будет пересоздаваться при каждом рендере
}
Основное отличие:
useRef сохраняет значение между рендерами, а createRef создаёт новый объект при каждом рендере.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3