Используя React-Bootstrap, у меня есть модальное окно, которое открывается условно. Модальный режим отлично работает в ie 11.
Вот модальное окно, которое работает в ie11..
handleCloseAlert() {
this.setState({ alertShow: false });
}
handleShowAlert() {
this.setState({ alertShow: true });
}
noResults() {
this.setState({alertShow:true})
}
<Modal show = {this.state.alertShow}
onHide = {this.handleCloseAlert}
{...this.props}
data-toggle = "modal"
size = "sm"
aria-labelledby = "contained-modal-title-vcenter"
centered>
<Modal.Header closeButton>
<Modal.Body>No results found</Modal.Body>
</Modal.Header>
</Modal>
Когда я тестирую в ie10, экран становится белым, когда модальное окно должно открыться. Вот ошибка, которую я получаю в консоли.
[object Error]{description: "Unable to s...", message: "Unable to s...", name: "TypeError", number: -2146823281, stack:
Unhandled promise rejection TypeError: Unable to set property 'paddingRight' of undefined or null reference
Я также тестировал, используя только код Bootstrap, и модальное окно работает с примером кода с веб-сайта bootstrap. Я полагаю, что мог бы использовать их код, но я не мог понять, как условно открыть и закрыть модальное окно.
Вот пример из бутстрапа, который не закодирован для условного рендеринга реакции.
<!-- Button trigger modal -->
<button type = "button" class = "btn btn-primary" data-toggle = "modal" data-target = "#exampleModal">
Launch demo modal
</button>
<!-- Modal -->
<div class = "modal fade" id = "exampleModal" tabindex = "-1" role = "dialog" aria-labelledby = "exampleModalLabel" aria-hidden = "true">
<div class = "modal-dialog" role = "document">
<div class = "modal-content">
<div class = "modal-header">
<h5 class = "modal-title" id = "exampleModalLabel">Modal title</h5>
<button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close">
<span aria-hidden = "true">×</span>
</button>
</div>
<div class = "modal-body">
...
</div>
<div class = "modal-footer">
<button type = "button" class = "btn btn-secondary" data-dismiss = "modal">Close</button>
<button type = "button" class = "btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Я пытался добавить show = {this.state.alertShow}
к модальному тегу, но получаю эту ошибку в консоли.
Warning: Received `false` for a non-boolean attribute `show`.
If you want to write it to the DOM, pass a string instead: show = "false" or show = {value.toString()}.
If you used to conditionally omit it with show = {condition && value}, pass show = {condition ? value : undefined} instead.
Есть ли способ сохранить мой текущий код и заставить его работать с ie10? Или мне нужно перекодировать без React-Bootstrap?
У меня также есть import 'react-app-polyfill/ie9';
в моем index.js
К сожалению, да.
Я хотел бы знать, установили ли вы свойство paddingRight в своем коде? Если да, то какова ценность?
Это странно. Единственный определенный paddingRight вложен в модули узла для модального окна в react-bootstrap. Пробовал комментировать, но безрезультатно.
Обновлять. Якобы react-bootstrap должен работать с IE 10. И все есть, кроме модального. Возможно ли, что у меня неправильная настройка полифилла. Я использую пакет react-app-polyfill. Этого достаточно или мне еще нужен cdn?
Modal работает с новым обновлением react-bootstrap
Это не сарказм, но поддержка IE10 закончилась много лет назад, и, судя по статистике использования, практически нет пользователей, использующих эту версию. Вы абсолютно уверены, что ваше приложение должно поддерживать IE10?