reactjs – 如何使React中的onMouseLeave包含子上下文?
发布时间:2020-12-15 20:45:31 所属栏目:百科 来源:网络整理
导读:我目前正在构建一个下拉按钮来学习React.我在父div中创建了两个onMouseEnter和onMouseLeave事件,使其在悬停时可见,而不是.问题是这些事件只会影响父母. 如何使用React中的onMouseLeave包含子上下文? 或者,当我在徘徊在孩子身上时,如何保持状态扩展? class
我目前正在构建一个下拉按钮来学习React.我在父div中创建了两个onMouseEnter和onMouseLeave事件,使其在悬停时可见,而不是.问题是这些事件只会影响父母.
如何使用React中的onMouseLeave包含子上下文? class DropDownButton extends React.Component { constructor(){ super(); this.handleHoverOn = this.handleHoverOn.bind(this); this.handleHoverOff = this.handleHoverOff.bind(this); this.state = {expand: false}; } handleHoverOn(){ if(this.props.hover){ this.setState({expand: true}); } } handleHoverOff(){ if(this.props.hover){ this.setState({expand: false}); } } render() { return ( <div> <div className={styles.listTitle} onMouseEnter={this.handleHoverOn} onMouseLeave={this.handleHoverOff}> {this.props.name} </div> <div> {React.Children.map(this.props.children,function(child){ return React.cloneElement(child,{className: 'child'}); })} </div> </div> ); } }
你的DOM中有两个不重叠的div;我会拆分渲染,所以更明显:
render() { return ( <div> <div className={styles.listTitle} onMouseEnter={this.handleHoverOn} onMouseLeave={this.handleHoverOff}> {this.props.name} </div> <div> {React.Children.map(this.props.children,function(child){ return React.cloneElement(child,{className: 'child'}); })} </div> </div> ); } 附加了onMouseLeave的div不包含子项;所以,当鼠标移动到孩子上时,它会离开div并调用this.handleHoverOff. 您可以考虑使用CSS隐藏子项,如果它们不应显示或有条件地呈现它们: render() { return ( <div className={styles.listTitle} onMouseEnter={this.handleHoverOn} onMouseLeave={this.handleHoverOff}> {this.props.name} {this.state.expanded && this.renderChildren()} </div> ); },renderChildren() { return ( <div> {React.Children.map(this.props.children,function(child){ return React.cloneElement(child,{className: 'child'}); })} </div> ); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – Thinktecture – 无法在Web API中处理加密的SAML安全
- 是否可以从JRuby创建Java类并在Java中使用它们?
- c – 如何在Windows GDI中旋转位图?
- 正则表达式 – 如何逃避加号在mac os x(BSD)sed?
- 如何给现有的PDF文件添加页码
- c# – 将AcceptChanges与SQL Server一起使用
- postgresql – Socket文件“/var/pgsql_socket/.s.PGSQL.54
- Oracle性能优化之性能诊断工具_超越OCP精通Oracle视频教程培
- react-native – 无法在设备上使用Live Reload / Hot Reloa
- C#停止线程的方法