Ich baue gerade einen Dropdown-Button, um React zu lernen. Ich habe zwei onMouseEnter- und onMouseLeave-Ereignisse im übergeordneten div gemacht, um es sichtbar zu machen, wenn es nicht angezeigt wird. Das Problem ist, dass diese Ereignisse nur bei den Eltern bleiben.Wie kann onMouseLeave in React den untergeordneten Kontext enthalten?
Wie onMouseLeave in React den untergeordneten Kontext enthalten? Oder, wie kann ich den Zustand beibehalten, um wahr zu sein, wenn ich auf Kinder schwebe?
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>
);
}
}
Es funktioniert. Ich habe einen dummen Fehler gemacht, und das bedingte Rendering ist auch für mich nützlich. Vielen Dank! –