- modal.classList.add('modal_show')
const modalContent = modal.querySelector('.modal__content')
if ( (modal.classList.contains('modal_show')) && (e.target != modalContent) ) {
modal.classList.remove('modal_show')
+ } else {
+ modal.classList.add('modal_show')
+ }
let p = new Promise((res, rej) => {
// Ждем 7сек; вызываем функцию res с аргументом 2
setTimeout(res, 7000, 2);
})
// Возвращаем новый промис; ждем 5сек; вызываем функцию res с аргументом 6 (2 + 4)
.then((data) => new Promise((res) => setTimeout(res, 5000, data + 4)))
.then((data) => console.log('data', data)); // 'data' 6
setTimeout(() => console.log(p), 10000); // Просто выведем промис
{MenuItems.map((item) => Object.entries(item).map(([headers, headersItems]) => (
<div className={s.wrapperSections}>
<img src={tile} alt={Object.entries(headersItems)[0][0]} />
<span>{headers}</span>
</div>
))}
array.map(([author, text]) => ({ author, text }))
array.reduce((acc, [author, text]) => [...acc, { author, text }], [])
array.reduce((acc, [author, text]) => (acc.push({ author, text }), acc), [])
array.reduce((acc, [author, text]) => {
acc.push({ author, text });
return acc;
}, [])
array.reduce((acc, pair) => {
acc.push({
author: pair[0],
text: pair[1]
});
return acc;
}, [])
for
если Вам это необходимо. useState<T | null>(null)
, т.к. в таком случае можно легко проверить значение в условном рендеринге. А если Вы объявите в вашем компоненте нечто вроде React.FC<{ data: T }>
, то Object
(точнее ничего, кроме T
честным путём) не сможете внутрь прокинуть.const formatter = new Intl.DateTimeFormat('en-US', {
timeZone: 'America/New_York',
weekday: 'long',
hour12: false,
hour: 'numeric',
minute: 'numeric'
});
const parts = formatter.formatToParts(new Date()).reduce((acc, entry) => ({
...acc,
[entry.type]: entry.value
}), {});
console.log(parts); // {weekday: 'Thursday', literal: ':', hour: '12', minute: '19'}
package.json
(npm init -y
). В приведённом Вами коде используются ES6-импорты (ESM-импорты), которые сразу не будут работать в Node.js, т.к. в нём используются CommonJS-импорты. Для решения данной проблемы у Вас есть два пути:"type": "module"
в package.json
:{
...
"type": "module",
...
}
- import * as crypto from 'crypto';
+ const crypto = require('crypto');
$ node .
cVoADkhcldK+mYC3Id5vhkxOr4NwVspTcgF56RiRG0CzcnOcBwcELKi1YnBNySmZugpjJNHuCU7ePjwVadqfAw==
interface IWrapper<T> {
component: T;
}
const Wrapper = <T extends React.ComponentType<any>>({
component: Component,
...props
}: React.PropsWithChildren<IWrapper<T> & React.ComponentProps<T>>) => <Component {...props} />;
transform-origin: 42.5px 152.5px;
Math.random().toString(36).slice(2)
Date.now()
crypto.randomUUID()
(docs)const digitValues = new Uint8Array(16);
crypto.getRandomValues(digitValues);
const randomHash = hexValues = [...digitValues]
.map(value => value.toString(16).padStart(2, '0'))
.join('');
export const sum = (a, b) => a + b;
export const diff = (a, b) => a - b;
export const multiply = (a, b) => a * b;
export const divide = (a, b) => a / b;
export * as Mod1 from './mod1.js';
export * as Mod2 from './mod2.js';
import * as M from './module.js';
console.log(M.Mod1.sum(1, 2)); // 3
console.log(M.Mod2.multiply(5, 3)); // 15
/**
* @param {MouseEvent} event
*/
function onButtonDown(event) {
alert(event);
}
addEventListener
её контекст выполнения потерян, вот типизация и отсутствует. const unwrap = (element) => {
element.replaceWith(...element.children);
};
unwrap(document.querySelector('.div'));