#reactjs #modal-dialog #semantic-ui #sidebar #semantic-ui-react
#reactjs #модальный диалог #semantic-ui #боковая панель #semantic-ui-реагировать
Вопрос:
Я использую Semantic-UI-React в очень простом интерфейсе. На главной странице используется a Sidebar.Pushable
для отображения меню и основного содержимого. Если какой-либо из подкомпонентов открывает a Modal
, Sidebar
он перестает реагировать. Ошибки нет — я предполагаю, что это как-то связано с тем, что какой-то CSS безвозвратно изменился на каком-то уровне. Как только a Modal
открывается в любом месте приложения, единственный способ снова Sidebar
сделать его доступным для нажатия — перезагрузить страницу.
Я сделал все возможное, чтобы углубиться в CSS, но мне все еще этого не хватает. На Github есть древняя проблема, связанная с аналогичным поведением в самом semantic-ui (т. Е. Без участия React), Но окончательного решения нет.
Чтобы воссоздать, просто используйте код из примера боковой панели и добавьте кнопку, которая открывает модал в Pusher
. Как только Modal
он открыт, Sidebar
он мертв.
Я создал образец песочницы.
Обновление: открыта проблема с Github: https://github.com/Semantic-Org/Semantic-UI-React/issues/4110
Ответ №1:
У меня такая же проблема, и я нашел обходной путь.
Сначала я добавляю фиктивное имя класса к триггеру боковой панели. Затем в скрытом дескрипторе я проверяю цель, и если это класс, я не устанавливаю состояние.
<Button size='huge' className="NoClose" icon style={{marginTop: '1em'}}
onClick={this.setVisible}><Icon className="NoClose" name='list' /> Menu</Button>
handleOnHide = (e, data) => {
if(!e.target.classList.contains('NoClose')){
this.setState({ visible: !this.state.visible });
}
}
Надеюсь, это поможет, пока не будет найдено реальное исправление
Комментарии:
1. я не уверен, что понимаю ваше решение. Безуспешно пытался воспроизвести его. Можете ли вы попробовать создать песочницу на основе моей, чтобы продемонстрировать?
2.Я не уверен, как это сделать с функциональными компонентами, но с классом это выглядит так: codesandbox.io/s/fervent-elbakyan-88r5f?file=/src/App.js 88r5f.csb.приложение
3. Ваш пример не работает: я не могу свернуть боковую панель после открытия, а боковая панель не работает после использования модального. Я что-то упустил?
4. Он не работает в изолированной среде, но используйте эту ссылку (она работает для меня) 88r5f.csb.app
5. Понял. Действительно ценю взлом и усилия :). Я посмотрю, может ли это работать в моем проекте.
Ответ №2:
Похоже, это было исправлено в semantic-ui-react@2.0.3 . Подробнее см. В этом выпуске.
Комментарии:
1. Я знаю — я открыл проблему. Также загружен тот же код с рабочим образцом
![]()