Javascript 类方法在加载后触发,但在加载后不工作
我正在将一个项目迁移到ES6,使用带有Babel的Webpack来编译代码。以下是我现在拥有的: entry.jsJavascript 类方法在加载后触发,但在加载后不工作,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在将一个项目迁移到ES6,使用带有Babel的Webpack来编译代码。以下是我现在拥有的: entry.js import Header from './components/header'; (function() { const header = new Header(); })(); header.js export default class Header { constructor() { this.bodyTag = document.querySelect
import Header from './components/header';
(function() {
const header = new Header();
})();
header.js
export default class Header {
constructor() {
this.bodyTag = document.querySelector('body');
this.toggleNavigationButton = document.querySelector('#toggleNavigationButton');
this.toggleNavigationButton.addEventListener('click', this.toggleMobileNavigation());
}
toggleMobileNavigation() {
this.bodyTag.classList.toggle('CLICK');
}
}
webpack.config.js
module.exports = {
entry: "./js/entry.js",
output: {
filename: "./js/bundle.js"
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
},
{
test: /\.scss$/,
use: [
{ loader: "style-loader" },
{ loader: "css-loader" },
{ loader: "sass-loader" }
]
}
]
},
resolve: {
extensions: ['*', '.js', '.jsx'],
},
};
问题是,当页面加载时,方法是触发toggleMobileNavigation
,而click
事件根本不起作用
我遗漏了什么?这是因为您的回调包含括号,然后立即被调用,请尝试删除它们:
this.toggleNavigationButton.addEventListener('click', this.toggleMobileNavigation);
这是因为回调包含括号,然后会立即调用,请尝试删除它们:
this.toggleNavigationButton.addEventListener('click', this.toggleMobileNavigation);
哦,好的,真的。谢谢:)但是如果我想把参数传递给这个回调怎么办?…('click',(e)=>this.myMethod(arg1,arg2)),Total会这样做。再次感谢:)哦,好的,真的。谢谢:)但是如果我想把参数传递给这个回调怎么办?…('click',(e)=>this.myMethod(arg1,arg2)),Total会这样做。再次感谢:)