问题:JS中LogoutButton实例化后自动触发点击,求排查原因
问题原因与解决方法
核心问题
你给newLogoutButton.action赋值时,直接执行了ApiConnector.logout(logoutSuccess),这会导致logout方法在代码执行到这一行时立即触发,而非等到按钮点击时才执行。
修改方案
把赋值语句改成用箭头函数包裹,让action指向一个待执行的函数,只有当按钮点击触发logoutClick、调用this.action()时,才会执行ApiConnector.logout:
"use strict" let newLogoutButton = new LogoutButton(); const logoutSuccess = (data) => { if (data.success === true) { location.reload(); } else { alert("登出失败"); } }; // 修改此处,用箭头函数包裹避免立即执行 newLogoutButton.action = () => ApiConnector.logout(logoutSuccess);
补充说明
- 原代码里
ApiConnector.logout(logoutSuccess)是直接调用函数,会立刻返回执行结果(如果logout没有返回函数,action会被赋值为undefined或其他返回值)。 - 用箭头函数包裹后,
action成为一个等待触发的函数,只有按钮点击时才会真正执行ApiConnector.logout(logoutSuccess)。
内容的提问来源于stack exchange,提问作者Kot
相关产品推荐
相关产品推荐

