Nella documentazione React dicono:Perché ref = 'string' è "legacy"?
Reagire supporta anche utilizzando una stringa (invece di un callback) come un puntello rif su qualsiasi componente, anche se questo approccio è in gran parte legato a questo punto.
https://facebook.github.io/react/docs/more-about-refs.html
Prendiamo il seguente esempio:
class Foo extends Component {
render() {
return <input onClick={() => this.action()} ref={input => this._input = input} />;
}
action() {
console.log(this._input.value);
}
}
Perché dovrei preferire questo, invece di:
class Foo extends Component {
render() {
return <input onClick={() => this.action()} ref='input' />;
}
action() {
console.log(this.refs.input.value);
}
}
?
Sembra molto più semplice e pulito il secondo esempio.
Ci sono rischi che il metodo stringa venga deprecato?
NB: Sto cercando la risposta "ufficiale" per la dichiarazione nella documentazione, non sto chiedendo di preferenze personali e così via.
È forse qualcosa a che fare con questo? https://facebook.github.io/react/blog/2015/02/24/streamlining-react-elements.html#pending-change-the-refs-semantics cioè interrompere la proprietà del ref al di fuori del genitore? Ci sono altri benefici, ma penso che questo fosse il loro ragionamento iniziale forse? – ctrlplusb
Hmm, leggi più qui: https://github.com/facebook/react/issues/3228#issuecomment-75461381 – ctrlplusb
Per inciso ricevo un errore di sfilacciamento con il primo metodo 'La funzione freccia non dovrebbe restituire l'assegnazione. ' – skube