nativeelement elementref javascript reactjs react-jsx

javascript - elementref - viewchild undefined angular 6



this.refs.something devuelve "undefined" (3)

Tengo un elemento con una ref que se define y termina siendo procesado en la página:

<div ref="russian" ...> ... </div>

Quiero acceder a las propiedades del elemento DOM como offset... o algo así. Sin embargo, sigo undefined y no tengo la menor idea de por qué. Después de algunas búsquedas, queda claro que las refs solo son aplicables a un archivo, pero no estoy usando esto en ningún lado, aparte de esta página. Estoy diciendo esto para registrarlo:

console.log(''REFS'', this.refs.russian);

¿Qué podría estar causando esto?


Actualización desde la versión 16.4 de React.

En tu método constructor define tu referencia como esta

constructor(props) { super(props); this.russian = React.createRef(); }

En tu render donde estés usando ref haz esto.

<input name="russian" ref={this.russian} // Proper way to assign ref in react ver 16.4 />

Por ejemplo, si desea tener enfoque cuando los montajes de componentes hacen esto

componentDidMount() { console.log(this.russian); this.russian.current.focus(); }

Referencia Refs Documentación Reaccionar


Compruebe que no está accediendo a la referencia antes de que se haya montado el componente secundario. Por ejemplo, no funciona en componentWillMount . Un patrón diferente que invoca automáticamente la devolución de llamada relacionada con la referencia después de que el elemento ha sido montado es este:

<div ref={(elem)=>(console.log(elem))}/>

También puede utilizar esta notación para obtener elementos montados en el anidamiento profundo:

<div ref={this.props.onMounted}/>


El lugar correcto para trabajar con las refs es dentro de los métodos específicos del ciclo de vida de React, por ejemplo, ComponentDidUpdate , ComponentDidUpdate

No puede hacer referencia a refs desde el método render() . Lea más sobre las precauciones de trabajar con refs aquí.

Si mueve su console.log(''REFS'', this.refs.russian); llame a los métodos del ciclo de vida de ComponentDidMount o ComponentDidUpdate (suponiendo que está en React> = 14), como resultado, no debe quedar indefinido .

ACTUALIZACIÓN: también las referencias no funcionarán en componentes sin estado según el enlace de precaución anterior