Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

419
Views
¿Cuál es la diferencia entre ref = {callback} y ref = "myInput" en reaccionar?

como enlace https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute

Luego solo da un ejemplo del uso del componente inmediatamente. Estoy tratando de averiguar cómo usaría esta función para acceder al componente de inmediato y guardar el componente para uso futuro, como dice que podemos hacer.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

La diferencia es que usar ref={callback} react le devuelve la responsabilidad de administrar el almacenamiento de referencia. Cuando usa ref="sometext", debajo de las cubiertas, react tiene que crear una propiedad refs en su clase y luego agregarle todas las declaraciones ref="sometext".

Si bien es bueno tener un acceso simple this.refs.sometext a los componentes, es difícil y propenso a errores en el lado de reacción para limpiar esta propiedad refs cuando se destruye el componente. Es mucho más fácil para reaccionar pasarle el componente y permitirle manejar almacenarlo o no.

De acuerdo con los documentos de reacción

React llamará a la devolución de llamada ref con el elemento DOM cuando el componente se monte, y lo llamará con nulo cuando se desmonte.

En realidad, esta es una idea bastante ingeniosa, al pasar nulo al desmontar y volver a llamar a su devolución de llamada, automáticamente limpia las referencias.

Para usarlo realmente, todo lo que tiene que hacer es acceder desde cualquier función de esta manera:

 class CustomTextInput extends React.Component { constructor(props) { super(props); this.focus = this.focus.bind(this); } focus() { // Explicitly focus the text input using the raw DOM API this.textInput.focus(); } render() { // Use the `ref` callback to store a reference to the text input DOM // element in this.textInput. return ( <div> <input type="text" ref={(input) => { this.textInput = input; }} /> <input type="button" value="Focus the text input" onClick={this.focus} /> </div> ); } }

La devolución de llamada que configuró en ref recibirá el componente como primer parámetro, la palabra 'this' será la clase actual 'CustomTextInput' en este ejemplo. Establecer this.textInput en su devolución de llamada hará que textInput esté disponible para todas las demás funciones como focus()

Ejemplo concreto

Tweet de Dan Abermov que muestra un caso en el que las devoluciones de llamada de referencia funcionan mejor

ingrese la descripción de la imagen aquí

Actualizar

Según Facebook Docs , el uso de cadenas para referencias se considera heredado y "recomiendan usar el patrón de devolución de llamada o la API createRef en su lugar".

over 4 years ago · Santiago Trujillo Report

0

Cuando asigna un ref={callback} como <input type="text" ref={(input) => {this.textInput = input}}/> lo que básicamente está haciendo es guardar el ref con el nombre textInput para el futuro usar. Entonces, en lugar de usar ref="myInput" y luego usar this.refs.myInput , podemos usar el método de devolución de llamada y luego acceder al componente más tarde como this.textInput .

Aquí hay una demostración de lo mismo, mediante la cual estamos accediendo al input value usando ref al hacer clic en el button click

 class App extends React.Component { constructor(){ super(); } handleClick = () => { console.log(this.textInput.value); } render() { return ( <div> <input type="text" ref={(input) => {this.textInput = input}}/> <button type="button" onClick={this.handleClick}>Click</button> </div> ) } } ReactDOM.render(<App/>, document.getElementById('app'));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.4/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.4/react-dom.min.js"></script> <div id="app"></div>

over 4 years ago · Santiago Trujillo Report

0

Con React 16.3, puedes usar la API React.createRef() en su lugar:

 class MyComponent extends React.Component { constructor(props) { super(props); this.myRef = React.createRef(); } render() { return <div ref={this.myRef} />; } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!