Это безопасно?Конечно, но это, вероятно, не будет работать так, как вы ожидаете.
Во-первых, вы можете полностью сбросить dom в div
, который создал React.
IМы встречались с несколькими программистами React, которые оспаривали бы этот факт, но дизайн Reacts ожидает и отчитывается за редактирование dom напрямую, когда это необходимо.Если бы они этого не сделали, не было бы componentDidUpdate
или React refs
.
Эта документация по интеграции с другими библиотеками , вероятно, наиболее актуальна.
Вот совок:
- React не будет касаться внутренних частей рендеринга div, предполагая, что он всегда пуст в конце рендера.Это только:
- Создание новых элементов, которые здесь неактуальны, пока вы оставляете их пустыми.
- Обновите существующие элементы, которые были изначально созданы реакцией.
- Удалите элементыкоторые были изначально созданы реакцией.
Так что просто создайте этот пустой div и оставьте его одного в render
, и React не будет связываться с ним.
Вот руб;React ничего не гарантирует о сроках рендеринга.
Это означает, что вы понятия не имеете, будет ли элемент фактически присутствовать при рендеринге Pagination
, что приведет к сбою запроса и не будет отображаться портал.,componentDidUpdate
работает только потому, что React специально запускает его после , когда dom обновляется.Но рендер запускается за до обновления dom.Так что если Pagination
отображается в том же цикле, что и Grid
, то, скорее всего, div еще не подключен.
Теперь печально известный стек переполняет ответ Just-Don't-Do-That:
Только не делай этого.Цель портала - позволить вам визуализировать вне контейнера React, сохраняя при этом ваши компоненты внутри дерева визуализации Reacts.Если вы все равно выполняете рендеринг внутри дерева рендеринга React, почему бы вам просто не рендерить компоненты там?(если это утверждение сбивает с толку, я виню вас)