document.addEventListener('copy', (e) => {
// тут можно поймать ctrl+c
// и например записать значения инпутов в переменную / сторадж
});
document.addEventListener('paste', (e) => {
// а тут ctrl+v
});
document.addEventListener('copy', function(e){
e.clipboardData.setData('text/plain', 'ничего ты не скопируешь');
e.preventDefault();
});
if (window.matchMedia('(display-mode: standalone)').matches) {
// do things here
// set a variable to be used when calling something
// e.g. call Google Analytics to track standalone use
}
json = {obj1:{value:0},obj2:{value:3},obj3:{value:2}}
Object.entries(json) // объект в массив
.map(( [key, val] ) => [key, val.value]) // убираем лишнее
.sort((a, b) => b[1] - a[1]) // сортируем
.map(a => `${a[0]}, value:${a[1]}`) // переводим в строки
.join('\n') // соединяем
document.querySelector('.remove').addEventListener('click', function() {
document.querySelector('input[type=file]').value = '';
}, false);
и весь текст одного размера
header div {
font-size: 40pt;
display: flex;
justify-content: space-around;
align-items: center;
padding: 4rem 0;
width: 400px;
border: Black 1px solid;
}
header h1 {
color: #1E90FF;
font-size: 40pt;
font-weight: 400;
}
app.use('/images', express.static(path.join(__dirname, 'src', 'data', 'images')))
const schema = new mongoose.Schema({ name: String });
// Mongoose will call this middleware function, because this script adds
// the middleware to the schema before compiling the model.
schema.pre('save', () => console.log('Hello from pre save')); // вот это
// Compile a model from the schema
const User = mongoose.model('User', schema);
new User({ name: 'test' }).save();
[...Array(12)].map(row => [...Array(31)])
[...Array(12)].map((row, x) =>
[...Array(31)].map((col, y) => x * 31 + y)
)
setInterval(updateKnopka, 1000)
function updateKnopka() {
/* раз в секунду меняет текст */
}
state = {loaded: false, data: null}
async componentDidMount() {
const data = await /* через ajax-запрос */
this.setState({ loaded: true, data: data })
}
render() {
if (!this.state.loaded) return null
// вывести данные
}
onSubmit: async (formValues) => {
try {
const res = await .........
if(Array.isArray(res)){
const err = res[0].message;
return (<div className="err-response">{err}</div>);
// ^ это не return из реакт-компонента, а из функции обработчика сабмита формы
// рендериться ничего не будет
}
},
const SignupForm = () => {
const [errorMessage, setErrorMessage] = React.useState(null)
....
if(Array.isArray(res)){
// то есть ошибка это когда res - массив?
setErrorMessage (res[0].message)
// теперь в errorMessage у нас текст ошибки, а не null
}
....
return (
<div className="form">
{ errorMessage && <p>${errorMessage}</p> }
{/* ^ если там null, то ничего не будет писаться */}
.....
</div>
)
}