2017-01-06 2 views
11

Мое настоящее понимание заключается в том, что компонент монтируется на DOM, когда это необходимо для просмотра или когда маршрут требует этого компонента. Он также будет предоставлять свои дочерние компоненты. Означает ли это, что компонент будет размонтирован при посещении маршрута, который не имеет этого компонента, или всякий раз, когда вы посещаете какую-либо страницу, на которой не отображается элемент, создаваемый этим компонентом? Таким образом, компонент необходимо будет перемонтировать каждый раз, когда он появляется на DOM (вне изменений prop и state), правильно?Когда компонент размонтируется?

ответ

0

Я бы сказал, что компонентный монтируется на DOM только в том случае, если он используется через другой компонент, включая компонент Router. Не думайте о маршрутизаторах как о специальных элементах/вещах в React. Они похожи на другие компоненты, и они выполняют сопоставление между текущим URL-адресом и шаблонами, которые им необходимо решить, какой компонент должен быть обработан с помощью функции render() Router. Всякий раз, когда происходит изменение URL-адреса, маршрутизатор выбирает новый компонент для рендеринга и выполняет рендеринг через функцию render().

+1

Я имел в виду, что у маршрутизатора есть собственная функция «render()» и использует соответствующий компонент там, в зависимости от того, какие шаблоны соответствуют текущему URL-адресу. что-то вроде этой реализации https://github.com/ReactTraining/react-router/blob/master/modules/Router.js#L126 –

-4

Если компонент нужен, его следует установить на DOM.

Если нет, но устанавливайте его до, если его следует размонтировать.

5

В VirtualDOM Примирения если компонент существует, но уже не будет, компонент считается демонтирован и дает возможность очистить (через componentWillUnmount).

Обратное верно, при сверке, если компонент не существует, но теперь делает компонент считается готовым для установки, и дать шанс приготовительные себя (constructor/componentWillMount)

При срыве дерева старые узлы DOM уничтожаются. Компонент экземпляров получает компонентWillUnmount(). При создании нового дерева в DOM вносятся новых узлов DOM. Экземпляры компонентов получают componentWillMount(), а затем componentDidMount(). Любое состояние , связанное со старым деревом, теряется.

https://facebook.github.io/react/docs/reconciliation.html

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

+0

Я уже давно искал эту ссылку/концепцию, но не мог любовь Бога формулирует запрос Google. Спасибо. – lakesare

+1

Я точно знаю? По какой-то причине мне всегда трудно найти материал в документах. Не их вина, я просто опустил ее на новые термины и понятия, не представленные в других JS-инфраструктурах – Chris

Смежные вопросы