Problema: un oyente usa el valor anterior de una variable en una devolución de llamada.
Estoy tratando de encontrar una forma adecuada de pasar una variable a una devolución de llamada. La devolución de llamada debe usar un valor relevante de la variable.
const [title, setTitle] = useState(''); useEffect(() => { notificationListener.current = Notifications.addNotificationReceivedListener(() => { foo(title); }); return () => {/* Removing Listener */}; }, []) El title muta con el tiempo y foo() debería recibir un valor de title relevante.
Soluciones que se me ocurrieron hasta ahora:
titlePero ninguno de ellos parece un enfoque óptimo. Por favor ayuda.
En lugar de crear una función anónima, puede crear una función para el oyente y envolverla en useCallback
const callbackFunc = useCallback(()=>{ foo(title) },[title])ahora tu efecto de uso será
useEffect(() => { notificationListener.current = Notifications.addNotificationReceivedListener(callbackFunc); return () => {/* Removing Listener */}; }, [])