Ich erstelle ein Dropdown-Menü mit onFocus und onBlur. Es gibt einen Grund dafür, dass ich onClick nicht verwende, da onFocus und onBlur das Menü nicht manuell schließen muss, wenn ich mehrere Dropdown-Menüs habe.verhindern check on checkbox ausgelöst onBlur
class Dropdown extends React.Component {
constructor(props) {
super(props);
this.state = {
open: false
}
}
render() {
return(
<div
tabIndex="1"
onFocus={() => this.setState({open: true})}
onBlur={() => this.setState({open: false})}
>
<p>Menu</p>
<div style={this.state.open === false ? {display: 'none'} : {display: 'block'} }>
{this.props.children}
</div>
</div>
)
}
}
class App extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<Dropdown>
<li onClick={() => alert('link 1')}>link 1</li>
<li onClick={() => alert('link 2')}>link 2</li>
<input type="checkbox" label="check"/>
</Dropdown>
</div>
);
}
}
Aber das Problem ist, das Kontrollkästchen wird nicht ordnungsgemäß funktionieren, da es onBlur auslösen wird.
Demo http://jsfiddle.net/dL99rx27/
Wie die onBlur verhindern auszulösen, wenn ich auf das Kontrollkästchen klicken? Ich benutze onClick es hat kein solches Problem.
dann, wie schließe ich den Dialog? Ich glaube nicht, dass du meine Frage verstehst. –