Комментарии 17
В какой момент собственно вы проверяете overflow:hidden и заменяете this.node в компоненте? Ведь он должен быть document.body, а в нормальных условиях как обычно родитель где используется компонент. Тема довольно интересная.
Не уверен, что правильно понял — поправьте если что. Мы не проверяем есть ли overflow у родителей, но идея интересная, можно поисследовать.
немного вышел из контекста, в самом начале статьи была речь об overflow:hidden, собственно выходит портал должен динамично понимать куда ему вставляться ( в body, или в родителя ), также интересно что можно сделать с CSS классами, которые меняют отображения компонентов внутри себя, если в этом случае он встанет в body.
Портал просто рендерит в body, например. Захотите вы его открывать или нет — это уже другой вопрос. Как и условия, при которых он нужен. Мы сейчас всегда рендерим через порталы, т. к. это намного проще.
Из минусов можно добавить, что серверный рендеринг скорее всего не работает.
Такой подход противоречит идеологии ReactJS, лучше использовать возможности фреймворка, например брать модальные окна из стора.
Что конкретно в этой подходе противоречит идеологии реакта? Как по вашему должна решаться эта проблема в рамках вашего представления об идеологии реакта?
Сторы, экшены и прочий флакс к реакту имеют опосредованное отношение.
Сторы, экшены и прочий флакс к реакту имеют опосредованное отношение.
Что это, блин, вообще значит — «брать модальные окна из стора»?
Буквально один в один 3 дня назад статья была, писал там, что лучше не ReactDOM.render, а ReactDOM.unstable_renderComponentIntoSubtree, так как сохранится контекст.
Спасибо за замечание, обновим модуль.
Я не хотел показаться грубым, если что :)
Мы в команде, в итоге, чтобы не городить велосипедов, взяли реализацию на хорошей поддержке — react-overlays
Мы в команде, в итоге, чтобы не городить велосипедов, взяли реализацию на хорошей поддержке — react-overlays
Есть еще отличный https://github.com/tajo/react-portal, если нужен только «портал».
Впрочем, оба используют ReactDOM.unstable_renderComponentIntoSubtree, в целом похожи, а с react-overlays идут еще несколько ништяков в виде более высокоуровневых компонентов.
Впрочем, оба используют ReactDOM.unstable_renderComponentIntoSubtree, в целом похожи, а с react-overlays идут еще несколько ништяков в виде более высокоуровневых компонентов.
По хорошему наверное в componentWillUnmout нужен removeEventListener?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Порталы в React.js