javascript - onMouseLeave 和 onMouseOut 激活得太快;

标签 javascript reactjs extjs extreact

有没有办法降低触发事件 onMouseLeave 或 onMouseOut 的灵敏度。因为我想将它们应用于弹出对话框,除了当鼠标悬停在文本(即 div 标签)上时它们一直在触发,只有当我完全冷静下来时它们才不会触发并且弹出对话框正常.功能显然可以正常工作,但鼠标事件的灵敏度太高。

这是我最重要的代码部分:

<div className="titleUnderLogo">
                <br /> <br />
                {applicationDataDefinition.map((item) =>
                    <div className="titleUnderLogo" onMouseOver = {this.mouseOver} onMouseLeave={this.mouseLeave} /* Tried with this also onMouseOut={this.mouseOut} */  > 

                        {item.name} {item.release} - {item.level} - {item.location}
                    </div>
                )}
                <br /> <br />
                <Container >
                    <Dialog 
                        displayed = {showDialog}
                        title="Product name"
                        modal={true}
                        layout="center"
                        defaultFocus="#ok"
                        ui="titleUnderLogoCls"
                        closeAction="hide"
                        maskTapHandler={this.mouseTapped}
                        onHide={() => this.setState({ showDialog: false })}
                    >
                        {applicationDataDefinition.map((item) => 
                            <div>
                                <table>
                                    <tr>
                                        <td> <b> Product name: </b> </td> 
                                        <td> {item.name} </td>
                                    </tr>
                                    <tr>
                                        <td> <b> Release: </b> </td>
                                        <td>  {item.release}  </td>
                                    </tr>
                                    <tr>
                                        <td> <b> Last fix installed: </b> </td> 
                                        <td> {item.lastFix}  </td>
                                    </tr>
                                    <tr>
                                        <td> <b> Environment: </b> </td>
                                        <td> {item.level} </td>
                                    </tr>
                                        <td> <b> Location: </b>  </td>
                                        <td> {item.location} </td>
                                </table>
                            </div>
                        )}
                    </Dialog>
                </Container>
</div>

最佳答案

您可以使用 lodash.throttle 限制事件

element.addEventListener('mouseout', _.throttle(callback, 100)); // 100 miliseconds

callback 是你在 mouseout 上执行的函数

编辑

好吧,我不明白 react ,但据我所知,一定是这样的

this.mouseOver//似乎是你的 ViewModel 中的一个方法所以

mouseOver: _.throttle(() => {
        // do something here or call another function like
        this.yourFunctionFromViewModelForMouseOver();
},100)

同样适用于 onMouseLeave={this.mouseLeave}

mouseLeave: _.throttle(() => {
            // do something here or call another function like
            this.yourFunctionFromViewModelForMouseLeave();
    },100)

关于javascript - onMouseLeave 和 onMouseOut 激活得太快;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50715539/

相关文章:

javascript - 创建简单的 ExtJS 表单

sencha-touch - 为什么我应该使用Ext.dispatch而不是直接调用 Controller 代码?

javascript - 使用csv文件的D3.js多系列折线图

javascript - Jquery改变内容链接值

css - 如何删除不同行中div之间的空间

reactjs - 使用 HTTPS 在 AWS S3 上部署 ReactJS 应用程序

javascript - 将注释中的数据传递到 aspx 页面

javascript - 如何强制 console.log 始终在字符串周围打印引号

javascript - jQuery - 如果所有子级都受到影响,则隐藏父级

javascript - 如何从子级访问父级引用