在 React 中将事件侦听器添加到 Ref
Add an event listener to a Ref in React
在 React 中将事件监听器添加到 ref:
ref
在元素上设置道具。- 使用
current
ref 上的属性来访问元素。 useEffect
在钩子中添加事件侦听器。
应用程序.js
import {useRef, useEffect} from 'react'; const App = () => { const ref = useRef(null); useEffect(() => { const handleClick = event => { console.log('Button clicked'); }; const element = ref.current; element.addEventListener('click', handleClick); return () => { element.removeEventListener('click', handleClick); }; }, []); return ( <div> <button ref={ref}>Click</button> </div> ); }; export default App;
useRef ()钩子可以传递一个初始值作为参数。该钩子返回一个可变的 ref 对象,其.current
属性被初始化为传递的参数。
请注意,我们必须访问
current
ref 对象上的属性才能访问我们设置prop的button
元素。 ref
当我们将 ref prop 传递给元素时,例如<div ref={myRef} />
,React 将.current
ref 对象的属性设置为相应的 DOM 节点。
我们将一个空的 dependencies 数组传递给
useEffect挂钩,因此它只会在组件安装时运行。
应用程序.js
useEffect(() => { const handleClick = event => { console.log('Button clicked'); }; const element = ref.current; element.addEventListener('click', handleClick); return () => { element.removeEventListener('click', handleClick); }; }, []);
我们将对该元素的引用存储在一个变量中,并使用
addEventListener
方法向click
按钮添加一个事件侦听器。
该方法采用的第一个参数是要侦听的事件类型,第二个参数是在指定类型的事件发生时调用的函数。
当组件卸载时,我们从useEffect
钩子返回的函数被调用。
我们使用
removeEventListener
方法来删除我们之前注册的事件监听器。
清理步骤很重要,因为我们要确保我们的应用程序中没有任何内存泄漏。