Я хочу создать эффект анимации при нажатии. Мне нужно добавить элемент и удалить его за 3 секунды при каждом нажатии. Не один элемент, если пользователи нажимают 100 раз за 3 секунды, я должен добавить 100 элементов и удалить их.Добавьте элементы в DOM, затем удалите их через n секунд?
click() {
// create element
// append element to div
// remove in 3 sec
}
render() {
return (
<div className="main" onClick={this.click}>Click it</div>
)
}
Это легко сделать с ванильным JS/JQuery
click() {
let elm = $('</div>');
elm.addClass('animation');
$('.main').append(elm);
setTimeout(() => {
elm.remove();
}, 3000);
}
Должен ли я использовать React для отображения этих элементов (.map, setState
, ...), или я могу использовать ванильный JS (appendChild
, removeChild
) ?
Простой пример в JQuery - https://jsfiddle.net/W4Km8/10107/
Спасибо.
Считаете ли вы, что это решение лучше, чем ванильный JS? Что бы вы использовали в этом случае? – Dilan
@ Dilan In React вы не должны напрямую манипулировать DOM, если вам не нужно. Так что да, это да «лучше», чем ванильный JS при работе с React – Chris
Удивительный, спасибо большое. Я хотел дважды проверить его. Vanilla JS является более простым способом в этом случае, и мне не нужно повторно отображать компонент при каждом нажатии. Вот почему я спросил об этом. – Dilan