html:
<button id='btn1'>按钮1</button>
<button id='btn2'>按钮2</button>
<button onclick="demo()">按钮3</button>
js:
// 方法1:addEventListener()
const btn1 document.getElementById('btn1')
btn1.addEventListener('click',()=> {
console.log('按钮1被点击了');
})
// 方法2:onclick()
const btn2 document.getElementById('btn2')
btn2.onclick=()=> {
console.log('按钮2被点击了');
})
// 方法3
function demo() {
console.log('按钮3被点击了');
}
React里通常使用第三种方法,但是需要注意以下几点:
<button οnclick="demo()">按钮3</button>
这里的onclick使用驼峰式,正确应为onClick;
"demo()"表示字符串,所以不能带引号,正确应为花括号{};
{demo()}表示赋值,将demo的结果赋过来,所以页面加载的时候就会执行该方法,直接输出结果,所以要去掉小括号,正确应为{demo},只有在点击的时候才回调该方法;
function demo() {...}应写为箭头函数,否则方法内的this指向会丢失,在使用this时会报undefined错误,因为类中的方法默认开启了局部严格模式。
总结:
React里用类创建组件时,组件里的自定义方法都要写成赋值语句+箭头函数的形式
方法调用时正确的写法为:
...
<button onClick={this.demo}>按钮3</button>
...
demo = ()=> {
console.log('按钮3被点击了');
}