Подтвердить что ты не робот

React.js: разница между findDOMNode и getDOMNode

Может ли кто-нибудь сказать мне, какая разница между

React.findDOMNode(this.refs.email).value

и

this.refs.email.getDOMNode().value

Они делают то же самое - получают значение элемента, но где я должен использовать его.

4b9b3361

Ответ 1

component.getDOMNode() устаревает с момента ответа 0.13:

Добавлен новый API верхнего уровня React.findDOMNode(component), который должен быть вместо component.getDOMNode(). Базовый класс для ES6 у компонентов не будет getDOMNode. Это изменение позволит еще шаблоны перемещаются вперед.

через http://facebook.github.io/react/blog/2015/03/10/react-v0.13.html#new-features

Скорее всего, он будет удален в будущей версии React (но не цитируйте меня на этом, потому что я не могу найти хорошую ссылку).


EDIT: Обновлено, чтобы отразить React 0.14

getDOMNode() выдает предупреждение в 0,13 и 0,14 и полностью удаляется в 0,15:

С каждым возвращенным DOM node мы добавили метод getDOMNode для обратного совместимость, которая будет работать с предупреждением до 0,15.

через https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#new-deprecations-introduced-with-a-warning

Также обратите внимание, что вызов findDOMNode или getDOMNode больше не нужен для React DOM-компонентов с 0.14:

Другие большие изменения, сделанные в этом выпуске, демонстрируют ссылки на компоненты DOM как сам DOM node. Это означает: мы посмотрели, что вы можете сделать с ссылкой на компонент React DOM, и поняли, что единственная полезная вещь, которую вы можете с ней сделать, - это вызов this.refs.giraffe.getDOMNode(), чтобы получить базовый DOM node. Начиная с этого выпуска, this.refs.giraffe является фактическим DOM node. Обратите внимание, что ссылки на пользовательские (определяемые пользователем) компоненты работают точно так же, как и раньше; Это изменение изменилось только на встроенные компоненты DOM.

через https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#dom-node-refs


Соответствующий код и фиксируется в React repo на GitHub:

Ответ 2

Второй - это старый API для доступа к refs DOM node, а первый - новый. Поэтому, если вы используете недавнюю версию React, вы должны использовать первую.