我創建了一個下拉菜單使用onFocus和onBlur。有一個原因,我不使用onClick,因爲onFocus和onBlur我不需要手動關閉菜單,如果我有多個下拉菜單。防止檢查checkbox上觸發Blur
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>
);
}
}
但問題是複選框將無法正常工作,因爲它會觸發onBlur。
演示http://jsfiddle.net/dL99rx27/
如何防止的onblur觸發,當我點擊複選框?我使用onClick它沒有這樣的問題。
然後演示如何關閉該對話框?我不認爲你理解我的問題。 –