2014-11-11 8 views
3

Мне иногда полезно использовать React's Refs, чтобы изменить состояние DOM, например, чтобы сфокусировать поле ввода после рендеринга компонента. Реагент или Ом реализуют это или, если не то, что является идиоматическим способом сделать это в этих библиотеках?Реагирует на реагент (или Ом)?

EDIT (после обсуждения ниже).

Использование this.getDOMNode в компонентеDidMount не является общим решением этой проблемы. Он разрешает доступ только к физическому элементу DOM после установки компонента. Иногда последовательный доступ к элементу требуется после каждого вызова для рендеринга - например, для запуска событий. Способ сделать это через Ref.

+0

Вы можете сделать это в методе 'componentDidMount', но это не рекомендуется. –

+0

«На этом этапе жизненного цикла компонент имеет представление DOM, доступ к которому вы можете получить через this.getDOMNode()« –

+0

«Помните, что вы возвращаетесь из render(), это не ваши фактические экземпляры дочерних элементов. То, что вы возвращаете из рендеринга() - это просто описание экземпляров детей в под-иерархии вашего компонента в определенный момент времени ». – kliron

ответ

3

Я нашел ответ от автора Reagent here, если кому-то нужно посмотреть. Оказывается, ссылки refs не могут быть напрямую поддержаны из-за того, как Reagent делает рендеринг. Предлагаемое решение состоит в том, чтобы обернуть часть компонента, на которую нужно ссылаться в другом компоненте, и использовать компонент-сделанный в оболочке.