Linking.removeEventListener 必需参数

Ben*_*Ben 2 react-native

如果我在 useEffect 挂钩中声明

Linking.addEventListener('url', ({ url }) => {
  handleUrl({ url, userDetails });
});
Run Code Online (Sandbox Code Playgroud)

在钩子的清理函数中编写是否足够Linking.removeEventListener('url', handleUrl);,或者我是否必须传递与声明中相同的参数Linking.addEventListener

小智 7

对于 2022 年的 React Native 的回答,你应该删除这样的事件:

useEffect(() => {
    const urlListener = Linking.addEventListener('url', handleUrl);

    return () => {
      urlListener.remove();
    };
  }, []);
Run Code Online (Sandbox Code Playgroud)


小智 6

始终首先声明处理程序,不要使用内联函数

const myhandler =({url}) => {
  handleUrl({ url, userDetails });
});
Run Code Online (Sandbox Code Playgroud)

然后将其附加到监听器

Linking.addEventListener('url', myhandler);
Run Code Online (Sandbox Code Playgroud)

并像这样删除它

Linking.removeEventListener('url', myhandler);
Run Code Online (Sandbox Code Playgroud)