window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versión: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster ya existe') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Llaves React, ¡Sí! Las necesita, pero ¿por qué exactamente? - The Codest
The Codest
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Industrias
    • Fintech y Banca
    • E-commerce
    • Adtech
    • Tecnología sanitaria
    • Fabricación
    • Logística
    • Automoción
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
  • Quiénes somos
  • Servicios
    • Desarrollo de software
      • Desarrollo Frontend
      • Desarrollo backend
    • Staff Augmentation
      • Desarrolladores frontales
      • Desarrolladores de backend
      • Ingenieros de datos
      • Ingenieros de la nube
      • Ingenieros de control de calidad
      • Otros
    • Asesoramiento
      • Auditoría y consultoría
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • Nuestro equipo
  • Case Studies
  • Saber cómo
    • Blog
    • Meetups
    • Seminarios en línea
    • Recursos
Carreras profesionales Póngase en contacto
Flecha atrás VOLVER
2021-10-12
Desarrollo de software

Llaves React, ¡Sí! Las necesita, pero ¿por qué exactamente?

Przemysław Adamczyk

Transformar un array en una lista de elementos con React es bastante sencillo, básicamente todo lo que necesitas hacer es mapear ese array y devolver el elemento apropiado para cada elemento del array.

También hay una cosa más que usted necesita recordar sobre y que es la React Llave cada elemento de la lista renderizada debe tenerlo. Este concepto es una de las primeras cosas que todo desarrollador front-end aprende sobre React al principio de su viaje. Ahora vamos a profundizar un poco más para explorar por qué es así y cuándo podemos tomar algunos atajos.

¿Por qué necesitamos este atributo clave?

La respuesta más sencilla aquí sería "para optimizar las re-renders", pero la más completa tiene que mencionar al menos el concepto de React Conciliación. Este es el proceso de averiguar cómo actualizar la interfaz de usuario de la manera más eficiente. Para hacerlo rápido, React tiene que decidir qué partes del árbol de elementos necesitan ser actualizadas y cuáles no. La cuestión es que puede haber muchos elementos en el DOM y comparar cada uno de ellos para decidir cuál debe actualizarse es bastante costoso. Para optimizar esto, React implementa el algoritmo diffing que se basa en dos supuestos:

  1. Dos tipos diferentes de elementos nunca serán iguales, así que vuelve a renderizarlos.
  2. Los desarrolladores pueden ayudar manualmente a optimizar ese proceso mediante atributos clave, de modo que los elementos, aunque su orden haya cambiado, puedan localizarse y compararse más rápidamente.

Basándonos en esto, podemos concluir que cada Tecla React también deben ser únicos (dentro de la lista de elementos, no globalmente), y estables (no deben cambiar). Pero, ¿qué puede ocurrir cuando no son tat?

Unicidad, estabilidad e índice de matriz

Como ya hemos dicho, Teclas React debe ser estable y único. La forma más sencilla de conseguirlo es utilizar un ID único (por ejemplo, de una base de datos) y pasarlo a cada elemento al mapear un array, fácil. Pero, ¿qué pasa cuando no tenemos un ID, un nombre u otros identificadores únicos para pasar a cada elemento? Bueno, si no pasamos nada como clave, React tomará el índice actual del array por defecto (ya que es único dentro de esa lista) para manejarlo por nosotros, pero también nos dará un bonito mensaje de error en la consola:

¿Por qué ocurre esto? La respuesta es que el índice del array no es estable. Si el orden de los elementos cambia, cada una de las claves cambiará y tendremos un problema. Si React se encuentra con una situación en la que se ha cambiado el orden en una lista de elementos, seguirá intentando compararlos por las claves, lo que significa que cada comparación acabará en la reconstrucción de un componente y, como resultado, toda la lista se reconstruirá desde cero. Además de eso, podemos encontrarnos con algunos problemas inesperados, como actualizaciones del estado de los componentes para elementos como entradas no controladas y otros problemas mágicos difíciles de depurar.

Excepciones

Volvamos al índice del array. Si se utiliza como Tecla React puede ser tan problemático, ¿por qué React lo utilizará por defecto? ¿Hay algún caso de uso en el que esté bien hacerlo? La respuesta es sí, el caso de uso son las listas estáticas. Si estás seguro de que una lista que estás renderizando nunca cambiará su orden, es seguro usar array index, pero recuerda, si tienes algún identificador único, es mejor usarlo en su lugar. También puedes notar que pasar índices como claves hará que la función React al mismo tiempo que algunos de los linters externos muestran un error o una advertencia. Esto se debe al hecho de que el uso explícito de índices como claves se considera una mala práctica y algunos linters podrían tratarlo como un error, mientras que React lo considera como una situación en la que "los desarrolladores saben lo que hacen", así que no lo hagas a menos que realmente sepas lo que estás haciendo. Algunos ejemplos de cuándo puede estar bien usar esa excepción serían un desplegable con una lista estática de botones o mostrar una lista de elementos con la información de la dirección de tu empresa.

Una alternativa a la clave basada en conjuntos de datos

Supongamos que ninguna de las anteriores es una opción para nosotros. Por ejemplo, tenemos que mostrar una lista de elementos basada en el array de cadenas que puede ser duplicado, pero también puede ser reordenado. En este caso, no podemos usar ninguna de las cadenas porque no son únicas (esto también puede causar algunos bugs mágicos), y el índice del array no es lo suficientemente bueno porque cambiaremos el orden de los elementos. La última cosa en la que podemos confiar en situaciones como esta es el uso de algunos identificadores externos. Recuerda, tiene que ser estable, así que no podemos recurrir simplemente a Math.random(). Hay algunos paquetes NPM que podemos utilizar en estos casos, por ejemplo el paquete "uuid" paquete. Herramientas como ésa pueden ayudarnos a mantener las claves de nuestra lista estables y únicas, incluso cuando no podamos encontrar identificadores adecuados dentro de nuestro conjunto de datos. Deberíamos considerar utilizar primero el ID de la base de datos y el índice del array (si es posible), para minimizar el número de paquetes utilizados por nuestro proyecto.

Para terminar

  • Cada elemento de la lista de React deben tener un atributo clave único y estable,
  • Teclas React se utilizan para acelerar el Proceso de conciliación y evitar la reconstrucción innecesaria de elementos en las listas,
  • La mejor fuente de claves es el ID único de entrada de datos (por ejemplo, de la base de datos),
  • Puede utilizar el índice de la matriz como clave, pero sólo para una lista estática cuyo orden no cambiará,
  • Si no hay otra forma de obtener claves estables y únicas, considere el uso de algunos proveedores de ID externos, por ejemplo, el paquete "uuid".

Más información:

Por qué debería (probablemente) utilizar Typescript

¿Cómo no matar un proyecto con malas prácticas de codificación?

Estrategias de obtención de datos en NextJS

Artículos relacionados

Desarrollo de software

Crear aplicaciones web preparadas para el futuro: ideas del equipo de expertos de The Codest

Descubra cómo The Codest destaca en la creación de aplicaciones web escalables e interactivas con tecnologías de vanguardia, ofreciendo experiencias de usuario fluidas en todas las plataformas. Descubra cómo nuestra experiencia impulsa la transformación...

EL MEJOR
Desarrollo de software

Las 10 mejores empresas de desarrollo de software de Letonia

Conozca las principales empresas de desarrollo de software de Letonia y sus innovadoras soluciones en nuestro último artículo. Descubra cómo estos líderes tecnológicos pueden ayudarle a mejorar su negocio.

thecodest
Soluciones para empresas y escalas

Fundamentos del desarrollo de software Java: Guía para externalizar con éxito

Explore esta guía esencial sobre el desarrollo de software Java outsourcing con éxito para mejorar la eficiencia, acceder a la experiencia e impulsar el éxito de los proyectos con The Codest.

thecodest
Desarrollo de software

La guía definitiva para subcontratar en Polonia

El auge de las outsourcing en Polonia está impulsado por los avances económicos, educativos y tecnológicos, que fomentan el crecimiento de las TI y un clima favorable a las empresas.

TheCodest
Soluciones para empresas y escalas

Guía completa de herramientas y técnicas de auditoría informática

Las auditorías informáticas garantizan sistemas seguros, eficientes y conformes. Obtenga más información sobre su importancia leyendo el artículo completo.

The Codest
Jakub Jakubowicz CTO y Cofundador

Suscríbase a nuestra base de conocimientos y manténgase al día de la experiencia del sector informático.

    Quiénes somos

    The Codest - Empresa internacional de desarrollo de software con centros tecnológicos en Polonia.

    Reino Unido - Sede central

    • Oficina 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polonia - Centros tecnológicos locales

    • Parque de oficinas Fabryczna, Aleja
      Pokoju 18, 31-564 Cracovia
    • Embajada del Cerebro, Konstruktorska
      11, 02-673 Varsovia, Polonia

      The Codest

    • Inicio
    • Quiénes somos
    • Servicios
    • Case Studies
    • Saber cómo
    • Carreras profesionales
    • Diccionario

      Servicios

    • Asesoramiento
    • Desarrollo de software
    • Desarrollo backend
    • Desarrollo Frontend
    • Staff Augmentation
    • Desarrolladores de backend
    • Ingenieros de la nube
    • Ingenieros de datos
    • Otros
    • Ingenieros de control de calidad

      Recursos

    • Hechos y mitos sobre la cooperación con un socio externo de desarrollo de software
    • De EE.UU. a Europa: ¿Por qué las startups estadounidenses deciden trasladarse a Europa?
    • Comparación de los polos de desarrollo de Tech Offshore: Tech Offshore Europa (Polonia), ASEAN (Filipinas), Eurasia (Turquía)
    • ¿Cuáles son los principales retos de los CTO y los CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Condiciones de uso del sitio web

    Copyright © 2025 por The Codest. Todos los derechos reservados.

    es_ESSpanish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean nl_NLDutch etEstonian elGreek es_ESSpanish