CONSEJO: Estas usando mal los Event Listeners en Javascript !!!

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ส.ค. 2024
  • En este video quiero darles un tip a las personas que comienzan aprender javascript, para optimizar mas su código mediante delegación de eventos.
    Mis cursos de desarrollo web:
    ⭐ Curso Completo de Diseño Web Profesional:
    www.desarrollo...
    ⭐ Curso Completo de React y Firebase:
    www.desarrollo...
    ⭐Curso Completo de Javascript
    www.desarrollo...
    ⭐ Curso Completo de PHP y MYSQL:
    www.desarrollo...
    ⭐ Curso de Bootstrap 5:
    www.desarrollo...
    ⭐ Curso Completo de creación de tiendas online:
    www.desarrollo...
    ---
    📄 Código del Video: jsfiddle.net/r...
    ---
    Redes Sociales:
    📌 Twitter: / falconmasters
    📌 Página de Facebook: / falconmasters

ความคิดเห็น • 242

  • @luisfrontendvue2001
    @luisfrontendvue2001 3 ปีที่แล้ว +33

    Tambien empece con los foreach dando listeners a cada elemente, pero despues aprendi la delegacion de eventos y es una manera elegante y optima de colocar eventos a los items que se van creando dinamicamente, buen video!

  • @elliotowasp4077
    @elliotowasp4077 3 ปีที่แล้ว +13

    Más videos de estos. Excelente ejemplo para optimizar!

  • @MiguelGarcia-zy1sh
    @MiguelGarcia-zy1sh 3 ปีที่แล้ว +12

    Eres excelente, he aprendido más contigo que con cualquier profesor, gracias por todo

  • @christopherdallar1508
    @christopherdallar1508 3 ปีที่แล้ว +4

    Son brutales tus videos de tips, nunca dejes de hacerlos, eres diferentes a los demás youtubers gracias a eso, Porque tu nos ayudas con tu experiencia y nos provees de exactamente maneras de mejorar y no solo con un curso y ya, sino mejorar lo que ya aprendimos

  • @edwynamador
    @edwynamador 3 ปีที่แล้ว +10

    Faltó que mencionaras sobre removeEventListener (para los principiantes), que en ocasiones sí es un requisito, para no tener comportamientos inesperados o problemas de performance.

  • @yoniervasquezmarin2319
    @yoniervasquezmarin2319 2 ปีที่แล้ว +1

    Muy buen vídeo, la manera de manejar los eventos es muy excelente y me gustó la ventaja de que se detectan los clics en los nuevos nodos hijos agregados. Gracias por mostrarnos este método!.

  • @osmanmazariegos4586
    @osmanmazariegos4586 3 ปีที่แล้ว +6

    Excelente recomendación, y muy claro te felicito.

  • @lopuma1990
    @lopuma1990 2 ปีที่แล้ว +1

    Pedazo de vídeo muy bien explicado, tienes más así ???, Ayudan mucho

  • @juliopaez9989
    @juliopaez9989 ปีที่แล้ว

    Muy bueno el video, excelente el tema de la propagación del evento. Una observación, probé armando una lista con 2 campos, Ejemplo campo1>campo2. Comprobé que funciona mal si se hace click adentro de los div internos, el click tiene que hacerse en el div de la fila.

  • @davidticstorm4114
    @davidticstorm4114 2 ปีที่แล้ว

    Excelente video... Que buena manera mencionas para realizar la delegación de los eventos ... Son de gran ayuda. Saludos

  • @chicocrazy220691
    @chicocrazy220691 2 ปีที่แล้ว

    Había olvidado la propagación de eventos, gracias por recordarme lo. Eres genial

  • @Hiroki_MakeGames
    @Hiroki_MakeGames ปีที่แล้ว +1

    Wow excelente! Muchas gracias por el vid. Me vino bárbaro como novato busco mejorar mi código , así que gracias !

  • @zcoder8940
    @zcoder8940 2 ปีที่แล้ว

    Excelente como siempre! ..y por favor, no se pierda, trate de subir videos de este estilo, cortos y directos a un asunto en especifico, son geniales! Saludos...

  • @edwinloaiza1017
    @edwinloaiza1017 3 ปีที่แล้ว

    Carlos excelente video y metodo super facil como siempre gran aporte.
    muchas gracias

  • @marcosgonzalezmarin8157
    @marcosgonzalezmarin8157 2 ปีที่แล้ว

    gracias carlos arturo por compartir tu conocimiento, sin duda tus videos me han servidos ya desde hace un par de años

  • @lanb08
    @lanb08 3 ปีที่แล้ว

    Que buen video, excelente demostración de como hacer una programación mas limpia. Muchas gracias por compartir tus conocimientos

  • @undefined5339
    @undefined5339 2 ปีที่แล้ว +2

    Pensé que lo estaba haciendo mal y que había una manera más optimizada de hacerlo, pero me doy cuenta de que aprendí bien y de la manera correcta:') muchas gracias!

    • @eljons1137
      @eljons1137 ปีที่แล้ว

      Me pasó lo mismo xD
      Sabía que lo estaba haciendo mal cuando ya llevaba varios listeners individuales dentro de un conjunto de elementos jajaja

  • @pablowbk
    @pablowbk 2 ปีที่แล้ว

    Buen consejo, sobre todo para los que stamos iniciando en la programación

  • @agussdk4194
    @agussdk4194 3 ปีที่แล้ว

    Amigazo que buen video, en mi vida se me hubiera ocurrido, alta data, muchas gracias.

  • @rancorsz
    @rancorsz 2 ปีที่แล้ว

    Excelente, forma de optimizar y bastante práctico el ejemplo, muchas gracias

  • @madrigalmartinezkevinfranc1761
    @madrigalmartinezkevinfranc1761 2 ปีที่แล้ว

    Excelente, no había escuchado si quiera de la delegación de eventos. De hecho me viene perfecto para optimizar un viejo script que se basa en esperar el evento load de imágenes, sabía que poner event listeners a la larga en grandes cantidades iba a ser problema. No tenía la más remota idea de que hacer en ese caso.

  • @juliopaez9989
    @juliopaez9989 ปีที่แล้ว

    Genial tu video: totalmente funcional y útil para usarlo en mis paginas web. Gracias totales

  • @williamvasquez3600
    @williamvasquez3600 3 ปีที่แล้ว

    Excelente explicación Falcon como siempre, continúa haciendo lo que haces, se te da muy bien. Me ayudaste muchísimo. Saludos

  • @jeremyframirezpasapera596
    @jeremyframirezpasapera596 2 ปีที่แล้ว +2

    Una pregunta y si dentro de un boton tendrias mas etiquetas por ejemplo
    icono
    Texto
    ¿cómo seria para que se ejecute el evento en todo ese contenedor del boton validandolo por clase ?

  • @borisxd6614
    @borisxd6614 3 ปีที่แล้ว

    Excelente Falcón, es un enorme placer ver tus videos...

  • @pritep
    @pritep 3 ปีที่แล้ว +2

    Excelente vídeo, no se me había ocurrido la segunda opción, lo que pense que ibas a hacer es que al crear un elemento de lista, crear con el un event listener. Pero siempre sorprendiendo :)

    • @FalconMasters
      @FalconMasters  3 ปีที่แล้ว +2

      Me alegra mucho que te haya servido!

  • @juancarlosruiz7012
    @juancarlosruiz7012 2 ปีที่แล้ว

    Primer video que veo de tu canal. Muchas gracias por el contenido, explicas todo perfecto y vas al punto! Ya me he subscrito a tu canal 😀

  • @gabrieltenorio3517
    @gabrieltenorio3517 2 ปีที่แล้ว

    He llegado a usar la segunda manera pero no de manera conciente.
    Ahora que entiendo cómo funciona, será más limpio mi código, ¡Gracias!

  • @bitmau77
    @bitmau77 ปีที่แล้ว +1

    Cuando agregas 'A' al condicional, de donde es que esta saliendo? a que esta haciendo referencia ese 'A' ? si es a la etiqueta no entiendo porque en Mayúscula? si alguien que sepa me puede ayudar agradezco de antemano ;P

  • @maximojuniorapazachirhuana9641
    @maximojuniorapazachirhuana9641 3 ปีที่แล้ว +1

    cuando aprendi la delegacion de eventos en js me senti dios , jajaja porque yo antes si hacia lo que mostraste al inicio del video . Buen video

  • @xReDCrIsTx
    @xReDCrIsTx 3 ปีที่แล้ว

    Muy bueno, no lo sabia y hacía la primera opción

  •  3 ปีที่แล้ว +1

    Existe otro problema: si haces click en el icono el tagName será "" en vez de "" y no se hará toggle de "activo".
    La solución es cambiar el if. La condición sería "el target es el elemento o es un elemento dentro del elemento

  • @GM-lh8be
    @GM-lh8be 2 ปีที่แล้ว

    excelente explicación una observación so te falto explicar el e.stopPropagation() que se usa para detener la propagación de eventos a los hijos

  • @gerdebur
    @gerdebur 2 ปีที่แล้ว

    Un video muy explicativo... gracias... se aprende mucho

  • @markuswater
    @markuswater 3 ปีที่แล้ว

    Muchas gracias por compartir este consejo, desde ahora lo empezaré a aplicar!!

  • @kazza5545
    @kazza5545 2 ปีที่แล้ว

    Excelente método! Por favor has más videos sobre optimización así como este, estoy haciendo mi primera app y no se nada de optimización! D:

  • @arromero491
    @arromero491 2 ปีที่แล้ว

    Sigue con el buen trabajo, hermano, entendí todo por tu buena explicación.

  • @gabriellejq27
    @gabriellejq27 3 ปีที่แล้ว +2

    Genial. Gracias por compartir.

  • @securecodingdevelopment5023
    @securecodingdevelopment5023 3 ปีที่แล้ว

    Excelente gracias! hice un menu dinámico de esta forma donde le aplique que entregase un valor data-xxx para diferenciar, pero ahora lo dejare un poco mas limpio, y para las tablas donde remapeaba el listener hare lo mismo , saludos!

  • @MiguelGomez-lk7tn
    @MiguelGomez-lk7tn ปีที่แล้ว +1

    NO se si aun leas comentarios pero tus videos son lo mejor que he visto,gracias bro

    • @FalconMasters
      @FalconMasters  ปีที่แล้ว

      Aún intento leer todos los comentarios.
      Muchas gracias por tu comentario!

  • @ezequielmartinezlopez8768
    @ezequielmartinezlopez8768 2 ปีที่แล้ว

    Gracias por el video, aprendi algo nuevo e interesante.

  • @lucianoschmidt2398
    @lucianoschmidt2398 2 ปีที่แล้ว

    Hermano me solucionaste la vida. No hubiera adivinado que podes asignar el evento al elemento padre ni por casualidad. Sos un genioooo

  • @taoistagames6077
    @taoistagames6077 3 ปีที่แล้ว +1

    hola gracias por el video, duda: event listeners o function onclick en el botón, y el motivo. saludos muchas gracias.

  • @satoshi093
    @satoshi093 3 ปีที่แล้ว

    Que cool. Yo también admito hago el primer caso y estaba empezando a preocupar el tema de tener tantos eventos pero con esto se me solocionaran esos temas 🤠

  • @erikmartinez8169
    @erikmartinez8169 ปีที่แล้ว

    Épale Carlos gracias por este video tu canal parece la caja de Pandora lleno de contenidos poderosos, gracias por la información

    • @FalconMasters
      @FalconMasters  ปีที่แล้ว +1

      Gracias Erik!

    • @erikmartinez8169
      @erikmartinez8169 ปีที่แล้ว

      @@FalconMasters todos los días aparte del curso de Javascript en udemy veo el contenido de tu canal, hermano ya me hice esa costumbre gracias por todo ese contenido

    • @FalconMasters
      @FalconMasters  ปีที่แล้ว +1

      @@erikmartinez8169 Eso es genial! Muchas gracias por hacérmelo saber, y me gustaría preguntarte, ¿como te sientes con lo que has aprendido?

    • @erikmartinez8169
      @erikmartinez8169 ปีที่แล้ว +1

      @@FalconMasters totalmente satisfecho hermano de verdad agradezco el esfuerzo que haces para compartir esos conocimientos geniales sobre desarrollo web, y si ya me he hecho el hábito de ver todos los vídeos del canal. Y voy por más cursos 😁

  • @delcarmat
    @delcarmat ปีที่แล้ว

    gracias es muy util yo tambien usaba un for antes

  • @joserodrigolopezfuentes5607
    @joserodrigolopezfuentes5607 ปีที่แล้ว +1

    Excelente. Me ayudo muchisimo :3 .

  • @WalterPagani
    @WalterPagani 2 ปีที่แล้ว

    De momento no lo voy a usar (creo). Pero siempre esta interesante cosas nuevas cosas que permitan mejorar las habilidades. Nunca hay que dejar de estudiar y aprender.
    Casi se me olvida. Gracias por el vídeo.

  • @joaquinbustelo7889
    @joaquinbustelo7889 2 ปีที่แล้ว

    Me encanta la forma en la que explicas

  • @ftwtf
    @ftwtf 3 ปีที่แล้ว

    Muy buen ejemplo!! Desconocía la propagación de eventos. Recientemente programé una sala de cine con tablas e itere los ≤td≥ para ponerles el click, eran más de 100 elementos 😂

  • @TheCarloz2009
    @TheCarloz2009 3 ปีที่แล้ว

    la forma de optimizar el Event Listeners es mediante la delegación de eventos al colocarle el evento al document y depuse detectar quien es el que emite el evento con la función matches, asi solo tenemos un Event Listeners en la aplicación

  • @Tylorix
    @Tylorix 2 ปีที่แล้ว

    yo lo hago con un insertar elemento html y le pongo el listener, así no tengo un foreach cada que agregas un elemento, pero me gusta bastante este método, lo único es que hay que estar atento a que evento le estas dando y a que target, por el tema de que todos los que estén anidados mas el padre tienen el mismo listener por así decirlo

  • @arturrojas9209
    @arturrojas9209 2 ปีที่แล้ว

    Excelente! muy profesional, gracias por el aporte 💯

  • @mpinovaz4014
    @mpinovaz4014 2 หลายเดือนก่อน

    Muy buen tip, gracias.

  • @ODaro-mc7nm
    @ODaro-mc7nm 3 ปีที่แล้ว

    Como siempre un placer ver tus videos!!

  • @jaimeviloriogreen
    @jaimeviloriogreen 3 ปีที่แล้ว

    Ojo que los elementos hijos no sean del mismo tipo de etiqueta del padre, es decir: . . . , ya que el tagName o nodeName es el mimo en el padre y en el hijo, y en caso de serlo, la verificación con el if debe ser más estricta usando, quizás, classList.contains(), por mencionar.

  • @hamiltonsilesmercado5373
    @hamiltonsilesmercado5373 2 ปีที่แล้ว

    Gracias, justo lo que necesito.

  • @ernestomotta5178
    @ernestomotta5178 3 ปีที่แล้ว

    Me surgió una duda, en qué condiciones un evento de click no tendría Target? Gracias por el video, es súper bueno

  • @heribertovelascomora8747
    @heribertovelascomora8747 3 ปีที่แล้ว

    Genial muchas gracias, es muy útil esta forma de programar en javascript

  • @JValenteM92
    @JValenteM92 3 ปีที่แล้ว +1

    Que bueno, no sabía esa forma, gracias por existir...
    Pregunta: Hay una forma de obtener todos los campos de un formulario o id y enviarlos con POST usando fecth sin estar repitiendo formulario.append(data..., value...)!

    • @chepevic
      @chepevic 3 ปีที่แล้ว +3

      const enviarForm=async()=>{
      const formulario=document.querySelector('#formulario'); //guardar formulario en una variable
      const form=new FormData(formulario); //captura todos los campos del formulario
      const response=await fetch('url',
      { method:'POST',
      body: form
      });
      const data=await response.json(); or response.text(); dependiendo lo que quieras obtener...
      console.log(data)//ver la respuesta
      }
      enviarForm();

  • @joanjoan8845
    @joanjoan8845 2 ปีที่แล้ว

    Excelente! muchisimas gracias !

  • @oscarbattaglia9130
    @oscarbattaglia9130 ปีที่แล้ว

    Muchas gracias muy clarito!
    Perdón por la ignorancia, pero porque en el JS se pregunta por A mayúscula en el tagName si el tag es a minuscula en HTML?

  • @pabloantoniojuarezsalas
    @pabloantoniojuarezsalas 3 ปีที่แล้ว

    Muchas gracias voy a incorporar este conocimiento en mi código.

  • @jcruz30
    @jcruz30 3 ปีที่แล้ว

    Excelente video, aunque esta un poco dificil cuando hay muchos elementos, por ejemplo en una tabla con tr > td > a(para editar) & a(para eliminar) ademas que cada uno tiene un icono en vez de letras por lo que cada vez que hago click me sale el elemento del icono y no del a (me sale o bien svg o path)

    • @FalconMasters
      @FalconMasters  3 ปีที่แล้ว +1

      Si, este es un ejemplo sencillo, pero se puede aplicar a tablas. Le pones el listener al table y aun así todos los elementos dentro sin importar que tan profundos estén tendrán el listener. Es cosa de hacer un buen condicional.

    • @Cloweling
      @Cloweling 3 ปีที่แล้ว +1

      Lo que puedes hacer, siempre agregando el evento a la tabla, agregar un attribute con inicial "data-" en el tag que quieres capturar, Ejemplo: data-row="delete" y con la condicional capturas al elemento cuando tenga ese atributo. Bueno aunque hay varias formas pero esa es la forma como se me ocurre.

  • @rigomorficooficial3827
    @rigomorficooficial3827 3 ปีที่แล้ว

    Justo en un proyecto hice un menú de presupuestos me abría venido genial tu consejo jajaja

  • @SeiFukai
    @SeiFukai 3 ปีที่แล้ว +1

    Muchas gracias Falcon, excelente video como siempre.

  • @rodriguezfregosojosueleona6743
    @rodriguezfregosojosueleona6743 ปีที่แล้ว

    15:06 ahi tengo una duda cuando usas tagname como es que se reconoce la A como etiqueta aunque no sea en minuscula ya que entiendo que esta comparando si se esta seleccionando la etiqueta ,entonces no importa si 'A' lo mone como mayuscula ? es decir si seria lo mismo que poner e.target.tagName==='a'

  • @terryadityaildefonsochagua3710
    @terryadityaildefonsochagua3710 2 ปีที่แล้ว

    Mi pregunta es si se PUEDE OBVIAR poner en el condicional: e.target porque se supone que cuando se hace CLICK, ya hay un OBJETIVO, ya hay un TARGET, eso de puede OMITIR???

  • @igor.miranda
    @igor.miranda 3 ปีที่แล้ว

    woow maestro de maestros.!! GRACIAS TOTALES.

  • @darkl3iaX
    @darkl3iaX 3 ปีที่แล้ว +1

    Muy genial todo wow!

  • @CYBERKRANE
    @CYBERKRANE 3 ปีที่แล้ว

    Muy buen tip, muy útil, Gracias Falcon.

  • @oscardelacruz1557
    @oscardelacruz1557 3 ปีที่แล้ว +1

    Hola Carlos, estoy en estos días siguiendo tu curso de Udemy para la creación de paginas web. Tengo una pequeña duda, vale la pena aprender la parte de Jquerry?, veo muchos comentarios de que no vale la pena ya hoy en día aprenderlo y son muchos los comentarios que veo (Incluso videos, aquí en youtube). No se si es que ya ha sido desplazado o simplemente esta de moda otro, cualquiera sea el caso, me gustaría saber de parte tuya si vale la pena aun así seguir con esa parte del curso o si puedo en parte omitirla. Gracias de antemano

    • @mrhuevo9265
      @mrhuevo9265 2 ปีที่แล้ว

      Pues te recomiendo aprenderlo, ejemplo pues estás en una empresa y te piden hacer un proyecto que lo habían hecho y tiene jquerry.
      Puede ser que ya no esté tanto usó pero uno nunca sabe cuándo necesito algo en específico.

  • @zvzartedigital1003
    @zvzartedigital1003 ปีที่แล้ว +1

    Gracias!!!!

  • @davidhilera2877
    @davidhilera2877 3 ปีที่แล้ว

    Excelente aporte.

  • @rikromero1
    @rikromero1 2 ปีที่แล้ว

    Que copado! Gracias!!

  • @armandoruiz9349
    @armandoruiz9349 3 ปีที่แล้ว

    Muy bueno. gracias

  • @2005bgva
    @2005bgva 2 ปีที่แล้ว

    Excelente, muy bueno.

  • @mariaeugeniacabanas841
    @mariaeugeniacabanas841 3 ปีที่แล้ว

    Hola Carlos, genial, Gracias!! como siempre excelente video. Saludos

  • @basiliocabreja1268
    @basiliocabreja1268 2 ปีที่แล้ว

    Hola, muchas gracias por tus video ya que son bien explicativos. Quisiera crear un bot para una pagina web donde debo seleccionar intervalos de horas en un dia completo dividido en intervalos de media hora por ejemplo de 12:00 am a 12:30am, 12:30am a 1:00 am y así sucesivamente. hasta llegar al intervalo de 11:30pm a 12:00m.
    Dentro de la página hay un botón donde hay que hacer clic para actualizar el programa dentro de la página para ver los intervalos que están disponibles en ese momento, pero esos intervalos son liberados por el sistema al azar, y no puedo estar todo el día sentado en una PC actualizando la página para tomar las horas que pueda liberar el sistema a una hora cualquiera. Así que me gustaría crear un bot donde pueda actualizar la página en ese botón cada X segundos que yo quiera y que lo haga continuamente y cuando aparezcan esos intervalos de horas disponibles, el bot de detenga de actualizar la página y tome esos intervalos que estén disponibles y pueda elegirlos todos al mismo tiempo.
    Quisiera saber que lenguaje de programación aprender para hacer un bot de este tipo, si Javascript, Python o cual?

  • @ramonsaavedra7904
    @ramonsaavedra7904 11 หลายเดือนก่อน

    Hola.. Y como se haria lo de el evento que no targetee al div si el padre es div y los hijos tambien?

  • @minotamashiroM
    @minotamashiroM 3 ปีที่แล้ว

    Excelente video muchas gracias Falcón

  • @digitalstablerds2498
    @digitalstablerds2498 ปีที่แล้ว +1

    Muy buen video

  • @ramrmarquez
    @ramrmarquez ปีที่แล้ว

    Saludos ....
    Creo que esto es lo que estoy necesitando ....
    Se puede recuperar el id del elemento en el que yo hago click de multiples elementos igualitos pero con diferente id .... ??

  • @gonzaloaguero7197
    @gonzaloaguero7197 2 ปีที่แล้ว

    Tenés que acercar la cámara más se ve bien pero todo muy pequeño

  • @21linkinpark
    @21linkinpark 3 ปีที่แล้ว

    ¿Cómo se aplica estos conceptos en proyectos React? Gracias por el video!

  • @rubenvalencia283
    @rubenvalencia283 3 ปีที่แล้ว

    Gracias por el vídeo querido Falcon, he estado haciendo las cosas mal!

  • @rondamon4408
    @rondamon4408 2 ปีที่แล้ว

    ¿¿¿Si haces un preventDefault esto bloquearía el evento de la etiqueta "a"???

  • @newentu
    @newentu 3 ปีที่แล้ว

    Excelente tutorial!!

  • @PedroGar-33092
    @PedroGar-33092 2 ปีที่แล้ว

    Buen video, he estado haciendo las dos cosas, pero aveces me oriento más por la primera....

  • @dgalicia
    @dgalicia 3 ปีที่แล้ว

    No lo sabía. Genial

  • @misterl8129
    @misterl8129 2 ปีที่แล้ว

    buenisimo video, gracias

  • @darkl3iaX
    @darkl3iaX 3 ปีที่แล้ว

    WOW!!! no sabia eso del propagation O_O.

  • @jorgevalbuena4502
    @jorgevalbuena4502 3 ปีที่แล้ว +7

    Carlitos se usan mal por qué son para javbascript....jajaja🤣

  • @jkf16m96
    @jkf16m96 2 ปีที่แล้ว

    Buen video, no sabia esto!!

  • @franzmiguelsalinas
    @franzmiguelsalinas ปีที่แล้ว

    Gracias maestro!!

  • @juliettecetina1494
    @juliettecetina1494 3 ปีที่แล้ว

    Muchas gracias, explicación clara y concisa! Ahora a aplicarla 😊

  • @edustreamimg
    @edustreamimg 2 ปีที่แล้ว

    sabes si se pueden apilar varios cllick event en un solo ul? es decir que le configuro un listener en una parte de mi codigo y despues en otro lado me interesa conservar el primero y apilar un segundo.

  • @FateeOG
    @FateeOG 3 ปีที่แล้ว

    Buen video, sigue subiendo mas videos de JS

  • @juanalmonte1642
    @juanalmonte1642 2 ปีที่แล้ว

    excelente explicacion

  • @LenRM
    @LenRM 3 ปีที่แล้ว

    Cómo siempre alucinante 😘💛💛💛 #elmejor