Estoy trabajando con un botón React Native en el que estoy llamando a una función. Pero quiero llamar a la función solo después de 250 ms y cuando el usuario deja el botón, lo que significa que cuando se llama a onPressOut. Cómo puedo hacer eso. Actualmente es así:
const onChangeCurtain = () =>{ setActive(!active); onPressItem(); } const onLongPress = () => { setActive(false); } return ( <Container onPress={onChangeCurtain} onPressOut={onLongPress} /> ) Ahora se llama a onChangeCurtain inmediatamente y se llama onLongPress cuando el usuario deja el botón. Pero no quiero que se llame a onLongPress si se presiona durante menos de 250 ms. Debe llamarse solo si se presiona durante más de 250 ms. ¿Cómo puedo hacer eso?
Puede usar detectores de eventos en button como onKeyDown y onKeyUp .
En onKeyDown , inicie setTimeout , que realizará algo después de 250 ms
Y en onKeyUp , borre este intervalo para que no se active si el usuario no presionó el botón Guver el tiempo suficiente.
import * as React from 'react'; export default function App() { let downTimer = null; const onMouseDown = () => { clearTimeout(downTimer); downTimer = setTimeout(function() { alert('Mouse down > 250 ms'); }, 250); } const onMouseUp = () => { clearTimeout(downTimer); } return ( <button onMouseUp={ onMouseUp } onMouseDown={ onMouseDown }>asd</button> ); }