прямо сейчас, когда я очень быстро нажимаю сенсорные непрозрачности, он накапливает кучу вызовов обратного вызова onpress, а затем выполняет их с течением времени. Вместо этого я хочу иметь возможность предотвратить дальнейшие обратные вызовы, пока сенсорная непрозрачность "нажата" или исчезла, так что onpress вызывается только один раз для каждого раза, когда сенсорная непрозрачность "вниз", т.е. один полный цикл затухания, а затем обратно Как бы я это сделал?
Предотвратить TouchableOpacity при нажатии, когда не в середине?
Ответы (1)
Я думаю, что вы пытаетесь сделать, вы хотите ограничить свои обратные вызовы при печати, чтобы они запускались только один раз. Для этого вы можете использовать throttling
с underscore
библиотекой: например:
class MyComponent extends React.Component {
constructor(props) {
super(props);
_.throttle(
this.onPressThrottle.bind(this),
200, // no new clicks within 200ms time window
);
}
onPressThrottle() {
// this only runs once per 200 milliseconds
}
render() {
return (
<View>
<TouchableOpacity onPress={this.onPressThrottle}>
</TouchableOpacity>
</View>
)
}
}
person
Suyog K.C
schedule
03.01.2018
Не добавит ли это просто временную задержку активации кнопки, а не установит некую логику одного нажатия?
- person Dizzykiwi; 03.01.2018
onPressIn
иonPressOut
для установки логического значенияisPressed
. В вашем методеonPress
проверьте, истинно ли логическое значение. Если это так, игнорируйте событие и возвращайтесь. Если нет, обработайте событие. - person fubar   schedule 03.01.2018