我正在尝试使用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));
。
有合适的解决方法吗?
答案 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);