Возникает проблема, что нужно нажать 2 раза на подсказку, чтобы она исчезла.
const onChange = ({ target: { value } }) => {
setVal(value);
setPrintVariables(value.length > 1
? arrayVariables.filter(n => n.includes(value))
: []
);
};
<input value={val} onChange={onChange} />
Т.е. операции по типу [[...arr], value] так же сработают по скорости и логике, как arr.push(value)?Про скорость ответили, скажу про логику: она у этих операций разная. В первом случае создаётся новый массив, во втором изменяется существующий. Это важно, если важна иммутабельность, как, например, в Реакте.
Т.е. операции по типу [[...arr], value] так же сработают по скорости и логике, как arr.push(value)?
if(message.length > 150) message.substring(0, 150)
import App from "./App.vue";
поможет.declare module "*.vue" {
import type { DefineComponent } from "vue";
const component: DefineComponent<{}, {}, any>;
export default component;
}
importScripts is not defined
не говорит о том, что файла не существует. Она говорит о том, что функции importScripts нет в том контексте, в котором все выполняется. В стандартном глобальном Window ее нет. В WorkerGlobalScope она есть. Нужно убедиться в том, в каком контексте выполняется ваш код. Что есть self в вашем коде. Тут многое зависит от того, как вы делаете свое приложение и как создаются эти воркеры (в некоторых фреймворках может своя локальная магия происходить). Есть неиллюзорная вероятность, что ваш код воркера загружается два раза. И запускается два раза. И первый раз он запускается в основном потоке, где self - это получается window. Если это так, то можно сделать запуск кода воркера из тупой проверки-заглушки, что-нибудь вроде:if (typeof importScripts === 'function') {
importScripts('......js');
// и все остальное тут
}
[
'phone': "+7(555)444-33-22",
'email': "random@ya.ru",
'name': "Иван",
]
const submitForm = (e: SubmitEvent) => {
e.preventDefault();
const form = e.currentTarget as HTMLFormElement;
const data = Object.entries(form.elements).reduce<Record<string, unknown>>(
(acc, [key, element]) => {
if (isNaN(Number(key)) && 'value' in element) {
acc[key] = element.value;
}
return acc;
},
{}
);
console.log(data);
};
const form = document.getElementById("form");
form?.addEventListener("submit", submitForm);
interface RequestModel<T> extends Request {
body: T
}
class UserRegisterModel {
first_name: string;
last_name: string;
email: string;
password: string;
constructor({first_name}) {
this.first_name = firstname;
// И так все НУЖНЫЕ поля
}
}
app.post('/register', async (req: RequestModel<UserRegisterModel>, res) => {
if(req.body) {
const user = new UserRegisterModel(req.body);
// Хоба и лишних полей нет ))
}
});
условие ? выражение1 : выражение2
if .. else
, где нужны разные действия.var parent = this.closest('div').className;
const parent = this.closest('.parent-selector');
const child = parent.querySelector(".b24-form-control-label");
с упрощенным функционалом (без лишнего)самая большая засада в этом кроется, так как лишнее может быть как 99% функционала так и 1%, и соответственно трудозатраты на создания будут отличаться на порядки
fetch('https://jsonplaceholder.typicode.com/todos/4')
.then((response) => {
response.json().then(console.log);
return fetch('https://jsonplaceholder.typicode.com/todos/5')
})
.then((response) => {
response.json().then(console.log);
return fetch('https://jsonplaceholder.typicode.com/todos/6')
})
.then(response => response.json().then(console.log))