Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

291
Vistas
Escuche los ganchos del ciclo de vida de laravel livewire en js

hay una manera de escuchar los ganchos del ciclo de vida de laravel livewire ? por ejemplo...

en php es:

 public function updatedFoo($value) { // }

¿Cómo puede ser en js (sé que use @this generar el buscador de identificación)?

 window.Livewire.find('componentIdGenerated').on('updatedFoo', function(value) { // });

¡muchas gracias!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Es posible y realmente genial. Como dice la documentación, hay ganchos de JavaScript relacionados como

 <script> document.addEventListener("DOMContentLoaded", () => { .... Livewire.hook('message.sent', (message, component) => {}) Livewire.hook('message.failed', (message, component) => {}) Livewire.hook('message.received', (message, component) => {}) Livewire.hook('message.processed', (message, component) => {}) }); </script>

Digamos que haces una llamada a algún método y al usarlo puedes obtener enlaces de mensajes y realizar las operaciones adecuadas.

 <script> document.addEventListener("DOMContentLoaded", () => { Livewire.hook('message.sent', (message,component) => { if (message.updateQueue[0].payload.method === 'openModal') { // message was sent } Livewire.hook('message.received', (message,component) => { if (message.updateQueue[0].payload.method === 'openModal') { // message was received } // and go on! </script>

también puedes escuchar cuando ocurre un evento y hacer lo mismo

 <script> document.addEventListener("DOMContentLoaded", () => { Livewire.hook('message.sent', (message,component) => { if (message.updateQueue[0].payload.event === 'someDispatchedEvent') { // message was sent } Livewire.hook('message.received', (message,component) => { if (message.updateQueue[0].payload.event === 'someDispatchedEvent') { // message was received } // and go on! </script>

¡Espero que puedas explotar esto más y mostrarnos cómo te va! ;-)

about 4 years ago · Juan Pablo Isaza Denunciar

0

gracias a @Prospero por dar los primeros pasos y la idea general del código necesario

primero necesitamos guardar el estado inicial de nuestra propiedad (en mi caso es un componente modal, la identificación es dinámica):

Las variables entre paréntesis son variables de hoja)

 ... @php $id = $id ?? \Illuminate\Support\Str::random(15); $model = $attributes->wire('model')->value() @endphp ...
 <script wire:ignore> var model{{ $id }}; document.addEventListener("livewire:load", function(event) { model{{ $id }} = @this.{{ $model }}; }); </script>

luego, con los ganchos de livewire, debe escuchar el evento element.updated y comparar el estado inicial con el nuevo estado de la propiedad livewire

solo uso comparaciones condicionales, vi que puedes usar Proxy para código limpio:

 <script wire:ignore> document.addEventListener("DOMContentLoaded", () => { Livewire.hook('element.updated', (el, component) => { if(model{{ $id }} && !@this.{{ $model }}) new bootstrap.Modal(document.getElementById('{{ $id }}')).hide(); if(!model{{ $id }} && @this.{{ $model }}) new bootstrap.Modal(document.getElementById('{{ $id }}')).show(); model{{ $id }} = @this.{{ $model }}; }); }); </script>

Lo uso para abrir un componente de componente de hoja modal de arranque.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda