Как размонтировать все компоненты корневого уровня в ReactJs

Есть ли способ получить все корневые элементы в React?

У меня есть ситуация, когда элементы создаются в корне через ReactDOM.render, однако они не размонтируются, когда мой компонент размонтируется.

Я хотел бы получить все элементы, кроме AppContainer, а затем размонтировать их, когда мой компонент будет монтироваться. Возможно ли это?

Как размонтировать все компоненты корневого уровня в ReactJs

Какая связь между AppContainer и другими компонентами? В вопросе отсутствует stackoverflow.com/help/mcve, который мог бы объяснить, что происходит.

Estus Flask 02.10.2018 17:42

Я добавляю настраиваемые компоненты реакции в таблицу данных, меня смущает, почему они входят в корень, поскольку они должны входить в td.

user3284707 02.10.2018 17:58

как в этом примере ... stackoverflow.com/a/44204235/3284707

user3284707 02.10.2018 17:59

Вам нужно отслеживать их и размонтировать вручную с помощью unmountComponentAtNode, когда они должны быть размонтированы. Я не могу сказать, как это делать в вашем случае, потому что вы не показали свой собственный код. Вопрос, который вы связали, использует jQuery, а вы, скорее всего, нет. MCVE является требованием для вопросов SO, потому что даже если вы думаете, что ваш случай такой же, как и в другом вопросе, он может отличаться.

Estus Flask 02.10.2018 18:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
4
728
1

Ответы 1

корневые компоненты, отображаемые с помощью ReactDOM, не знают друг друга.

чтобы размонтировать компонент, которого нет в дереве размонтируемого компонента, вы можете сделать что-то в этом роде:

const App1Component = <div>app1</div>;
const app1 = document.getElementById("app1")
ReactDOM.render(<App1Component/>, app1);

export class AppContainer extends React.Component {
  componentWillUnmount() {
    // ummount other components not in this tree
    if (app1) 
      ReactDOM.unmountComponentAtNode(app1);
  }
}

По сути, всякий раз, когда ваш «основной» компонент размонтируется, вызывайте ReactDOM.unmountComponentAtNode с другими корневыми элементами DOM-узлами.

Спасибо за ваш ответ, я не уверен, как я могу это сделать, поскольку элементы создаются динамически при создании таблицы данных, согласно ссылке stackoverflow.com/a/44204235/3284707, поэтому у меня нет ссылки на td значения при отключении компонента?

user3284707 02.10.2018 18:16

ну, технически вы можете попробовать получить их ссылку с помощью getElementById. Лучшим способом было бы назначить ссылку на реакцию каждому узлу DOM корневого элемента.

Uzi 02.10.2018 18:30

Другие вопросы по теме