如何在清理函数中的 React js 中执行 fileReader.removeEventListener

Posted

技术标签:

【中文标题】如何在清理函数中的 React js 中执行 fileReader.removeEventListener【英文标题】:How to do fileReader.removeEventListener in React js in cleaup function 【发布时间】:2021-07-25 01:08:51 【问题描述】:

我在 React js 中实现了一个图像预览器 这是codesandbox .我想在组件卸载时删除EventListener,但我无法做到。 我尝试使用 useRef 执行此操作,但出现未定义错误和此警告

The ref value 'fileReader.current' will likely have changed by the time this effect cleanup function runs. If this ref points to a node rendered by React, copy 'fileReader.current' to a variable inside the effect, and use that variable in the cleanup function.

【问题讨论】:

【参考方案1】:

你可以在 useEffect 中返回一个清理函数——这是处理它的推荐方法。请参考:How do I window removeEventListener using React useEffect

【讨论】:

这不起作用,因为我已经尝试过了。它不起作用,因为我们添加事件监听器的对象不一样。此外,如果您确定您提供的答案,您可以编辑代码框并分享链接。

以上是关于如何在清理函数中的 React js 中执行 fileReader.removeEventListener的主要内容,如果未能解决你的问题,请参考以下文章

react 钩子中的 useEffect 执行顺序及其内部清理逻辑是啥?

React useEffect 清理函数中的依赖没有更新

如何取消 useEffect 清理函数中的所有订阅和异步任务?

如何在异步函数 discord.js 中使用 message.react() 中的循环

React+Typescript:修复 UseEffect Hook(回调+清理函数错误)

依次执行自定义函数——Vue.js中的回调逻辑