• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Hire tech talent
    • Blog
    • Sales
    • Salary Calculator

0

305
Views
Creación de referencias fuera del componente. ¿Es eso una mala práctica?

Estoy trabajando en una biblioteca que requiere exportar un par de funciones para que los usuarios las soliciten. Esas funciones necesitan acceso a la referencia del componente para agregar/eliminar nombres de clase y desplazamiento automático, etc.

Pude hacer que funcionara moviendo mi referencia (creada por React.createRef ) fuera del componente en sí (NO hablando de definirlo fuera del constructor sino dentro del componente)

Así es como se ve mi código (usé un componente de clase en lugar de funcional ya que el gancho useRef obviamente no se puede usar afuera)

 import React, { PureComponent, createRef } from "react"; import { typingEffect } from "../redux/actions/dispatch"; import { containerRef } from "./Container"; let typingRef = createRef(); export async function displayTypingEffect() { await typingEffect(); typingRef.current.className += " rcb-is-typing"; containerRef.current.scrollTop = containerRef.current.scrollHeight + 700; } export function hideTypingEffect() { typingRef.current.className = "rcb-typing-container"; containerRef.current.scrollTop = containerRef.current.scrollHeight + 700; } export default class Typing extends PureComponent { render() { return ( <div ref={typingRef}> rest of the component code which is unnecessary for this question </div> ) }

Me pregunto si existe la posibilidad de problemas o errores imprevistos si sigo este patrón.

Gracias.

almost 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto hace que el typingRef

  1. una variable global (dentro del módulo), y
  2. ser creado fuera de cualquier ciclo de vida de React

typingRef será el mismo objeto para cada instancia del componente Typing , es decir, si se crean dos componentes a partir de la clase Typing , ambos escribirán en el mismo typingRef . Su API proporcionará acceso a algún elemento DOM, pero no puede estar seguro de cuál es actualmente.

typingRef se crea tan pronto como se importa el archivo, incluso antes de que se inicie React, y vivirá durante la vida útil del código Javascript, no durante la vida útil de ningún componente de React.

Creo (no estoy 100% seguro) que cualquier elemento DOM al que se haga referencia typingRef se mantendrá (al menos) hasta typingRef se sobrescriba (o finalice la ejecución de Javascript). Entonces, si un componente de escritura se desmonta, el elemento DOM (y todo lo que está conectado a él) aún se mantiene en la memoria. Por lo tanto, su API proporcionará acceso a elementos DOM "inútiles".

almost 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

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