0Pricing
Vue Academy · Lección

El problema del prop drilling

Por qué el prop drilling perjudica la mantenibilidad, qué resuelve provide/inject y cuándo usarlo.

El problema del prop drilling es una lección gratuita de Vue Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Vue Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Vue Academy incluye 4 lecciones en total.

Qué es el prop drilling

El prop drilling consiste en pasar datos a través de varias capas de componentes únicamente para que lleguen a un componente profundamente anidado. Cada componente intermedio debe aceptar y reenviar el prop aunque nunca lo utilice.

Un árbol de componentes profundo

Imagine un árbol: App -> Layout -> Page -> Section -> Widget. El Widget del nivel inferior necesita el tema actual, pero solo App, en la parte superior, lo conoce.

App
  Layout
    Page
      Section
        Widget  <-- needs "theme"

Pasarlo desde App

App contiene el tema y lo pasa a Layout como prop.

<!-- App.vue -->
<Layout :theme="theme" />

Layout lo reenvía

Layout no utiliza el tema, pero debe declararlo y pasarlo al siguiente nivel únicamente para que llegue allí.

<!-- Layout.vue -->
const props = defineProps({ theme: String });
// template:
<Page :theme="props.theme" />

Page también lo reenvía

Page repite el mismo código repetitivo: declararlo y después reenviarlo, aunque el tema no le interese.

<!-- Page.vue -->
const props = defineProps({ theme: String });
<Section :theme="props.theme" />

Section lo vuelve a reenviar

Y lo mismo ocurre en Section. Cada capa añade una conexión repetitiva que no tiene nada que ver con la responsabilidad de esa capa.

<!-- Section.vue -->
const props = defineProps({ theme: String });
<Widget :theme="props.theme" />

Por fin Widget lo utiliza

Solo en el nivel inferior Widget consume realmente el tema. Las cuatro capas superiores se limitaban a pasarlo.

<!-- Widget.vue -->
const props = defineProps({ theme: String });
// uses props.theme to style itself

Por qué es un problema

El prop drilling causa varios problemas:

  • Código repetitivo en cada componente intermedio
  • Los refactors pueden romper muchos archivos cuando cambia el nombre del prop
  • Los props intermedios ocultan lo que cada componente necesita realmente
  • Es difícil añadir nuevos valores compartidos

El problema empeora con muchos valores

Añada ahora user, locale y permissions. Cada uno debe atravesar las cuatro capas, lo que multiplica el código repetitivo.

<Layout
  :theme="theme"
  :user="user"
  :locale="locale"
  :permissions="permissions"
/>

No todos los valores compartidos deben ser props

Los props son excelentes para la comunicación directa entre un componente padre y uno hijo. Sin embargo, para valores que se necesitan en lo profundo de un subárbol, como el tema, el usuario actual o i18n, hacer prop drilling no es la herramienta adecuada. Necesitamos una forma de proporcionar datos directamente a todos los descendientes.

Aparecen provide e inject

Vue provide / inject permite que un ancestro proporcione datos que cualquier descendiente puede solicitar directamente, omitiendo todas las capas intermedias. En las próximas lecciones se explicará cómo proporcionar e inyectar datos.

Comprobación rápida

¿Qué describe mejor el prop drilling?

Repaso

Ha visto cómo el prop drilling obliga a cada componente intermedio de un árbol profundo a declarar y reenviar props que no utiliza, lo que genera código repetitivo y refactors frágiles. Provide/inject es una solución más limpia para los valores compartidos en profundidad.

Preguntas frecuentes

¿La lección «El problema del prop drilling» es gratis?

Sí — el texto completo de «El problema del prop drilling» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Vue Academy, actualiza a CoddyKit PRO. El curso de Vue Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El problema del prop drilling»?

Por qué el prop drilling perjudica la mantenibilidad, qué resuelve provide/inject y cuándo usarlo. Practicas Vue Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Vue Academy?

No se requiere experiencia previa. Vue Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «El problema del prop drilling»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Vue Academy?

Sí. Cada lección de Vue Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. El problema del prop drilling
  2. provide() en componentes padre
  3. inject() en componentes hijo
  4. Provide/Inject para el estado a nivel de aplicación
← Volver a Vue Academy