使用箭头函数回调添加和删除事件监听器

时间:2020-08-06 10:12:36

标签: javascript addeventlistener event-listener removeeventlistener

我正在尝试使用javascript向按钮添加和删除事件监听器

回调:

date

当我将其与这样的事件侦听器一起使用时,它将起作用:

const location = useLocation()
const lastLocation = useLastLocation()

const [date, setDate] = React.useState(new Date())

React.useEffect(() => {
  setDate((currentDate) => {
    const end = new Date();
    API.sendData({ start: currentDate, end, location: lastLocation });
    return end;
  });
}, [location, lastLocation]);

但是使用这种方法,由于let callback = (id) => alert(`This is a test Callback with id : ${id}`); ,我无法document.querySelector('#button').addEventListener('click', () => callback(id));
有合适的解决方法吗?

2 个答案:

答案 0 :(得分:7)

您需要引用完全相同的功能对象,以便能够再次删除该特定事件侦听器。

因此,您必须将其存储到变量中,然后在addEventListener和removeEventListener调用中都使用该变量。

let foo = () => callback(id);

document.querySelector('#button').addEventListener('click', foo);

// ...

document.querySelector('#button').removeEventListener('click', foo);

答案 1 :(得分:0)

let func = () => callback(id);
document.querySelector('#button').removeEventListener('click', func);