reactjs - 将鼠标事件传播到 Reactjs 中的 div 下
问题描述
我在反应页面中有一个按钮。在页面顶部,我有一个透明的固定 div,用于注册鼠标移动。
render() {
return(
<div>
<div class="fixed-transparent"
onMove={(e)=>{console.log('Mouse moved!')}}></div>
<div class="btn"
onClick={()=>{console.log('Button click!')}}>
I'm a button
</div>
</div>
);
}
问题是因为固定的 div 在页面顶部,所以按钮不响应鼠标点击。
如何将鼠标点击从固定 div 传播到下面的那些?
解决方案
你有几个选择。您可以让您的子组件(这就是所谓的“底层组件”)也监听鼠标事件,或者如果您让“透明”组件将点击事件处理程序向下传递给子组件。像这样的东西:
import react, { Component } from 'React';
export class ButtonComponent extends Component {
render() {
const { onClick } = this.props;
return <button onClick={onClick}>Click Me!</button>
}
}
export class TransParentComponent extends Component {
onClick = e => {
console.log('handle click here');
}
onMove = e => {
console.log('Mouse moved!');
}
render() {
return(
<div>
<div class="fixed-transparent" onMouseMove={this.onMove}></div>
<ButtonComponent onClick={this.onClick} />
</div>
);
}
}
推荐阅读
- javascript - 为什么这段代码显示找不到模块错误?
- android - Android Kotlin:设备收到新短信时监听事件不起作用
- c - 搜索带有空格的 EXACT 字符串。C程序中的txt文件
- laravel - 获取 v-for vuejs 中自定义输入的所有值
- python - Django 测试匹配查询不存在
- python - 如何计算这两个函数的时间复杂度?(递归)
- django - raise self.RelatedObjectDoesNotExist( Portal.models.logger.Student.RelatedObjectDoesNotExist: logger 没有 Student
- python - OCRmyPDF 抛出 [WinError 2] 系统找不到指定的文件
- node.js - aws ec2 nodejs空体通过axios发布请求发送
- flutter - 为什么在我的 VSCode 设置中“Flutter Doctor”和“New Application Project”失败?