Я снова читал документы, мне не ясно, в чем разница между определением ссылки как обратного вызова и строки:
<input ref={input => this._input = input} />
против <input ref="input" />
Может кто-нибудь прояснить мне, пожалуйста?
Если вы определите ref как строку, она будет доступна для объекта this.refs
, например, this.refs.input
.
Если вы определяете ссылку обратного вызова, вы можете делать с ней все, что угодно, включая сохранение ее на this
если хотите.
Строковые ссылки в конечном итоге будут устаревшими. Ссылки обратного вызова были введены позже, но они охватывают все варианты использования строковых ссылок и не имеют некоторых из их недостатков. Я предлагаю вам всегда использовать ссылки обратного вызова в новом коде, который вы пишете.
В будущем, пожалуйста, подумайте о том, чтобы задавать вопросы о StackOverflow. Мы официально не рассматриваем систему отслеживания проблем как форум поддержки, и, к сожалению, поиск GitHub не работает так же хорошо, как поиск StackOverflow, поэтому, вероятно, кто-то спросит об этом еще раз. Если вы разместите это на StackOverflow, скорее всего, вы получите хороший ответ, ваш вопрос будет проголосован, и больше людей узнают из него и найдут его в будущем.
Еще раз спасибо @gaearon. В следующий раз я воспользуюсь StackOverflow.
Без проблем! Не стесняйтесь отправлять запрос на перенос в документацию, если вы чувствуете, что мы могли бы сделать более очевидным, что мы рекомендуем шаблон обратного вызова в новом коде.
Самый полезный комментарий
Если вы определите ref как строку, она будет доступна для объекта
this.refs
, например,this.refs.input
.Если вы определяете ссылку обратного вызова, вы можете делать с ней все, что угодно, включая сохранение ее на
this
если хотите.Строковые ссылки в конечном итоге будут устаревшими. Ссылки обратного вызова были введены позже, но они охватывают все варианты использования строковых ссылок и не имеют некоторых из их недостатков. Я предлагаю вам всегда использовать ссылки обратного вызова в новом коде, который вы пишете.
В будущем, пожалуйста, подумайте о том, чтобы задавать вопросы о StackOverflow. Мы официально не рассматриваем систему отслеживания проблем как форум поддержки, и, к сожалению, поиск GitHub не работает так же хорошо, как поиск StackOverflow, поэтому, вероятно, кто-то спросит об этом еще раз. Если вы разместите это на StackOverflow, скорее всего, вы получите хороший ответ, ваш вопрос будет проголосован, и больше людей узнают из него и найдут его в будущем.