документации сделал функцию debounce и сделал счетчик, но при этом когда я несколько раз нажимаю кнопку, то счетчик передает +10 ровно столько раз сколько я нажму кнопку, игнорируя 5 секунд задержки которые я прописал. Где я ошибся, почему счетчик игнорирует debounce?
this.state = {
a: 0,
};
debounce(f, ms) {
let isCooldown = false;
return function () {
if (isCooldown) return;
f.apply(this, arguments);
isCooldown = true;
setTimeout(() => (isCooldown = false), ms);
};
}
clock = () => {
this.setState({a: this.state.a + 10});
};
<TouchableOpacity
style={[styles.button, styles.green]}
onPress={() => {
this.debounce(this.clock(), 5000);
console.log(this.state.a);
}}>
потому что сейчас в ваш дебаунс попадает результат вызова функции (а не сама функция), а там setState а вообще это вопрос для @js_ru / @js_noobs_ru, ничего специфичного для react / rn в вопросе нет
Обсуждают сегодня