В документации React они говорят:Почему ref = 'string' является "legacy"?
Реагировать также поддерживает использование строки (вместо обратного вызова) в качестве исх опоры на какой-либо компонент, хотя этот подход в основном наследие в этой точке.
https://facebook.github.io/react/docs/more-about-refs.html
Рассмотрим следующий пример:
class Foo extends Component {
render() {
return <input onClick={() => this.action()} ref={input => this._input = input} />;
}
action() {
console.log(this._input.value);
}
}
Почему я предпочитаю это, вместо того, чтобы:
class Foo extends Component {
render() {
return <input onClick={() => this.action()} ref='input' />;
}
action() {
console.log(this.refs.input.value);
}
}
?
Кажется, что гораздо более чистый и легкий второй пример.
Существуют ли риски, что метод string будет устаревшим?
NB: Я ищу «официальный» ответ на заявление в документации, я не спрашиваю о личных предпочтениях и так далее.
Возможно, это связано с этим? https://facebook.github.io/react/blog/2015/02/24/streamlining-react-elements.html#pending-change-the-refs-semantics т. е. нарушение права собственности вдали от родителя? Есть и другие преимущества, но я думаю, что это были их первоначальные рассуждения, возможно? – ctrlplusb
Хмм, читайте здесь: https://github.com/facebook/react/issues/3228#issuecomment-75461381 – ctrlplusb
Как в сторону, я получаю ошибку перебора с первым методом. Функция стрелки не должна возвращать присвоение. – skube