我正在尝试在反应组件中切换一个类,如果用户将鼠标放在按钮上,那么它会向该按钮添加一个类,当用户按下鼠标时,它会恢复并删除该类从按钮。
按照 此处 官方 ReactJS 文档中的解释和示例,我设法将以下代码片段放在一起,但它不起作用,并且不断在控制台上抛出语法错误:
import React from 'react';
export class Buttons extends React.Component{
toggleClass() {
if this.classList.has('btnDown') {
this.classList.remove('btnDown');
} else {
this.classList.add('btnDown');
}
}
render(){
return (
<div className="btn-wrap">
<button onMouseDown={(e) => this.toggleClass(e)} onMouseUp={(e) => this.toggleClass(e)} value = '1' >1</button>
<button onMouseDown={(e) => this.toggleClass(e)} onMouseUp={(e) => this.toggleClass(e)} value = '2' >2</button>
<button onMouseDown={(e) => this.toggleClass(e)} onMouseUp={(e) => this.toggleClass(e)} value = '3' >3</button>
<button onMouseDown={(e) => this.toggleClass(e)} onMouseUp={(e) => this.toggleClass(e)} value = '4' >4</button>
<button onMouseDown={(e) => this.toggleClass(e)} onMouseUp={(e) => this.toggleClass(e)} value = '5' >5</button>
<button onMouseDown={(e) => this.toggleClass(e)} onMouseUp={(e) => this.toggleClass(e)} value = '6' >6</button>
</div>
)
}
}
更新:
我重写了组件以使用 react 的 state
使用下面的@TomaszMularczyk 的回答作为参考,但现在所有按钮都被切换,而不是仅单击按钮,如下所示: https ://jsfiddle.net/69z2wepo /183164/
原文由 AndrewL64 发布,翻译遵循 CC BY-SA 4.0 许可协议
this
不会是 HTML 元素,而是 React 对象实例。我会尝试更被动的方式来实现这一目标并使用
state
: