将随时间变化的变量传递给侦听器



问题:监听器在回调中使用变量的旧值

我试图找到一个适当的方法来传递一个变量回调。回调函数应该使用变量的相关值。

const [title, setTitle] = useState('');
useEffect(() => {
notificationListener.current = Notifications.addNotificationReceivedListener(() => {
foo(title);
});
return () => {/* Removing Listener */};
}, [])

title随时间变化,foo()应得到相应的title值。

到目前为止我想到的解决方案:

  1. 在useRef()中保留值而不是useState()
  2. 销毁并重新创建侦听器更改title

但是没有一个看起来是最优的方法。请帮助。

不创建匿名函数,您可以为侦听器创建一个函数并将其封装在useCallback

const callbackFunc = useCallback(()=>{
foo(title)
},[title])

现在你的useEffect将是

useEffect(() => {
notificationListener.current = Notifications.addNotificationReceivedListener(callbackFunc);
return () => {/* Removing Listener */};
}, [])

相关内容

  • 没有找到相关文章

最新更新