我具有以下功能:
export function myoutsideClickHandler(menuRef) {
console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%");
console.log(menuRef);
document.addEventListener('click', (menuRef)=>test1(menuRef), false);
}
我可以看到menuRef已打印并具有价值。到目前为止一切顺利。
现在在test1()
函数中,我有:
export function test1(e, menuRef){
console.log(menuRef);
}
在控制台中,我看到undefined,这意味着还没有通过addEventListener发送menuRef
我传递menuRef参数的方式是否错误?
答案 0 :(得分:4)
绑定事件的方式是错误的。您点击的menuRef
将成为事件。您没有传递第二个参数。您的点击处理程序应为:
document.addEventListener('click', evt => test1(evt, menuRef), false);
答案 1 :(得分:0)
您可以使用匿名函数来触发需要多个参数的回调函数。因此,根据您的情况,将myoutsideClickHandler()
函数更改为以下内容应该有效:
export function myoutsideClickHandler(menuRef) {
console.log("%%%%%%%%%%%%%%%%%%%%%%%%%%");
console.log(menuRef);
document.addEventListener('click', function(e) {
test1(e, menuRef);
}, false);
}
但是,我应该注意,您没有正确使用事件处理程序,应该在点击处理程序功能之外调用它们并进行设置,因此您可能需要仔细阅读该内容,以避免将来出现问题。