У меня есть раскрывающийся список с множественным выбором, проблема заключается в том, что когда пользователь выбирает один элемент, раскрывающийся список закрывается.
Как сделать, чтобы раскрывающийся список закрывался только при внешнем клике?
Выпадающий список создается с помощью html ul > li:
// Here we loop trough list of filters and render options as <li> tags
<ul name = "filters" className = "dropdown">
{subFilters.map((filter, i) => (
<li
defaultChecked = {filter.name}
onClick = {() => handleSelect(filter)}
className = {`option`}>
<span>{filter.name}</span>
</li>
))}
</ul>
Часть Css. Используемые классы:
dropdown
для тегаoption
для.dropdown {
display: flex;
flex-direction: column;
min-width: 11rem;
position: absolute;
z-index: 1;
font-size: 16px;
border-radius: 3px;
border: solid 1px #dee1e5;
box-shadow: 0 9px 8px rgba(0, 0, 0, 0.05);
background-color: white;
outline: none;
cursor: pointer;
}
.option {
list-style-type: none;
padding: 10px 10px 10px 0;
margin-left: 2.6rem;
}
Возможный дубликат Используйте jQuery, чтобы скрыть DIV, когда пользователь щелкает за его пределами.
Приятель, это не jquery.
возможно, этот пост из реагирующих документов может вам помочь
Вы можете справиться с этим с помощью события onBlur
.
Предположим, у вас есть такой фрагмент:
<div class = "dropdown" onBlur = {() => this.handleBlur('myModal')}>Some content</div>
Сейчас this.handleBlur
handleBlur = modalName => {
this.setState({ [modalName]: false });
};
Не помогло, этот метод handleBlur что должен делать? изменить состояние openDropdown на false? Не уверен, что понял вашу функцию.
Предположим, модальное состояние будет логическим. Таким образом, при условии true
он будет открыт, а при условии false
будет закрыт.
Например. Назначьте свойство состояния модальному значению переключения. Затем вам нужно только обновить свойство этого состояния, чтобы открыть или закрыть модальный