response.json()
будет ждать окончания запроса, setCart
будет ждать json
, setPreloader
будет ждать их обоих или падения.Этот заголовок должен формироваться на клиенте, или этот заголовок формируют сами роботы?Какая разница в рамках задачи?
Обработка такого заголовка на бэке производится в настройках самого сервера, или где-то в коде самого приложения?Если веб-сервер может определить дату изменения сущности самостоятельно (например, речь про какой-то файл), то, конечно, лучше обрабатывать им. Но изменялась у вас карточка товара или нет, например, веб-сервер узнать не может, это знает только приложение.
useEffect(() => () => {
if (countDown.current) {
countDown.current.stop();
}
}, []);
Т.е. операции по типу [[...arr], value] так же сработают по скорости и логике, как arr.push(value)?Про скорость ответили, скажу про логику: она у этих операций разная. В первом случае создаётся новый массив, во втором изменяется существующий. Это важно, если важна иммутабельность, как, например, в Реакте.
if (document.getElementById('recaptcha1')) {
grecaptcha.render('recaptcha1', {
'sitekey': 'mysitekey',
'callback': onRecaptchaSuccess,
'expired-callback': onRecaptchaExpired,
'timeout': 120000
});
}
slick-initialized
, ваши стили должны отменяться или перебиваться Сликом..mobile-slick .privilege-card:first-child ~ .privilege-card {
display: none;
}
.mobile-slick.slick-initialized .privilege-card:first-child ~ .privilege-card {
display: inherit;
}
Cloning DOM nodes likewise throws a DataCloneError exception.Как минимум нельзя клонировать DOM, а в Event есть на него ссылки.
Parameters
aChild
The node to append to the given parent node (commonly an element).
const images = {
red: smoke1Red,
blue: smoke1Blue,
brown: smoke1Brown,
}
...
<img src={images[color] || smoke1Gray} />
Localizationhttps://github.com/mckamey/countdownjs#localization
Very basic localization is supported via the static setLabels and resetLabels methods. These change the functionality for all timespans on the page.
countdown.resetLabels(); countdown.setLabels(singular, plural, last, delim, empty, formatter);
editableBlock.childNodes[0].textContent = editableBlock.textContent + "!"
editableBlock.innerHTML = editableBlock.innerHTML + "!";
startContainer = editableBlock.childNodes[0];
const editableBlock = document.getElementById("editable-block");
editableBlock.addEventListener("input", function (event) {
// Запоминаем текущую позицию курсора
const selection = window.getSelection();
const {startContainer, startOffset} = selection.getRangeAt(0);
// Обновляем содержимое элемента
startContainer.textContent = startContainer.textContent.substr(0, startOffset) + "!" + startContainer.textContent.substr(startOffset);
// Восстанавливаем позицию курсора
const newRange = document.createRange();
newRange.setStart(startContainer, startOffset + 1);
newRange.setEnd(startContainer, startOffset + 1);
selection.removeAllRanges();
selection.addRange(newRange);
});
CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.https://developer.mozilla.org/en-US/docs/Glossary/CORS
#auth-container #auth-card &>div #form-section
, под который ничего не подпадает. Не нужно играться с вложенностью, сделайте хотя бы так:#auth-container {
min-height: 100vh;
background-color: red;
}
#auth-card {
display: flex;
justify-content: center;
&>div {
display: flex;
flex-direction: row;
min-width: 500px;
margin-top: 2.5rem;
background-color: white;
border-radius: 20px;
}
}
#image-section {
background-color: green;
border-top-left-radius: 20px;
border-bottom-left-radius: 20px;
img {
max-height: 300px;
min-width: 100%;
}
}
#form-section {
min-width: 300px;
h2 {
text-align: center;
}
form {
padding: 20px;
.input-field {
input {
height: 40px;
width: 100%;
box-sizing: border-box;
}
}
button {
width: 100%;
height: 30px;
background-color: blue;
border: none;
color: white;
cursor: pointer;
font-weight: 600;
}
}
}
box.addEventListener('mousemove', move)
будет работать ровно так, как вам нужно. И удалить обработчик потом можно без проблем.const handler = (e) => {
e.preventDefault();
move(e)
};
const move = (e) => {
console.log(e);
box.removeEventListener('mousemove', handler)
}
box.addEventListener('mousemove', handler);
Через брейкпойнт не реально найти, скриптов слишком много, к тому же я думаю что меняет какой то внешний скрипт.