【发布时间】:2020-01-04 12:28:08
【问题描述】:
假设我有这个类组件,我必须在其中检查鼠标是否按住单击、跟踪坐标并做一些事情。我曾经创建类,我可以在其中存储“this”变量以通过组件访问它们。 如何在不需要创建类的情况下处理功能组件中的这些变量?我知道旧方法只会在状态发生变化时重新渲染状态(理想情况),使用新方法会有点问题,对吧? 就我而言,我需要通过组件中的其他函数来使用 this.increment 变量(以及更多变量)。
class MyComp extends React.Component{
onMouseDown(e){
this.isMouseDown = true;
this.startX = e.clientX
this.startY = e.clientY
}
onMouseMove(e){
let x = e.clientX;
let y = e.clientY;
if (this.isMouseDown){
this.increment = this.startY - y
// do stuff with this.startX and this.startY
// ....
}
}
onMouseUp(){
this.isMouseDown = false;
}
render() {
return <div onMouseDown={this.onMouseDown.bind(this)}
onMouseMove={this.onMouseMove.bind(this)}
onMouseUp={this.onMouseUp.bind(this)} />
}
}
如何使用这样的功能组件实现相同的目标?
function MyComp ({ text }) {
return <div onMouseDown={e => onMouseDown(e)}
onMouseMove={e => onMouseMove(e)}
onMouseUp={e => onMouseUp(e)}>
{text}
</div>
}
感谢您的宝贵时间!
【问题讨论】:
标签: javascript reactjs functional-programming react-hooks