而不是定义
listener
内部变量
mount
,在构造函数中定义一个变量,并使用该变量添加或删除侦听器
class navigation extends Component {
//
// Construct
constructor(element) {
super(element);
//
this.ref = {
navButton: null,
navLinks: [],
};
this.listener = this.handleClick.bind(this);
}
// Mount
mount() {
this.ref.navButton.addEventListener("click", this.listener);
}
// Unmount
unmount() {
// Stop listening for click
this.ref.navButton.removeEventListener("click", this.listener);
}
// Click-handlers
handleClick() {
this.element.classList.toggle("closed");
}
}
//
// Export component
export default navigation;
希望这能解决您面临的问题。
使用箭头函数而不是使用
bind
class navigation extends Component {
//
// Construct
constructor(element) {
super(element);
//
this.ref = {
navButton: null,
navLinks: [],
};
}
// Mount
mount() {
this.ref.navButton.addEventListener("click", this.handleClick);
}
// Unmount
unmount() {
// Stop listening for click
this.ref.navButton.removeEventListener("click", this.handleClick);
}
// Click-handlers
handleClick = () => {
this.element.classList.toggle("closed");
}
}
//
// Export component
export default navigation;