How to receive one callback from three simultaneous events in React Native?

65 Views Asked by At

I'm listening to three different events that happen simultaneously and I want to get some data from each of these events. However, I want to receive the latest data from all three events at once.

I tried using useEffect but, of course, this is triggering the callback at least three times, instead of just once.

const [key, setKey] = useState('');
const [text, setText] = useState('');
const [position, setPosition] = useState(0);

const onKeyPress = ({ nativeEvent: { key } }) => setKey(key);
const onChangeText = text => setText(text);
const onSelectionChange = ({ nativeEvent: { selection: { start, end } } }) => {
  start === end && setPosition(start);
}

useEffect(() => {
  // I want to do stuff with the latest key, text and position.
  // However, this is called more than once when typing.
}, [key, text, position]);

// ..

<TextInput
  onChangeText={onChangeText}
  onKeyPress={onKeyPress}
  onSelectionChange={onSelectionChange}
/>

How can I achieve this?

0

There are 0 best solutions below