Mejorar la experiencia del usuario con las propiedades de sesión de Livewire

  • Publicado el 13 agosto, 2024
  • Palabras: 909

Como desarrolladores de Laravel, siempre buscamos formas de crear interfaces de usuario más fluidas e intuitivas. Livewire, el framework de Laravel para crear interfaces dinámicas, ofrece una característica poderosa que puede ayudarnos a hacer justamente eso: las propiedades de sesión. En esta publicación, exploraremos cómo usar las propiedades de sesión de Livewire para conservar el estado del componente después de recargar la página.

Mejorar la experiencia del usuario con las propiedades de sesión de Livewire

#¿Qué son las propiedades de sesión de Livewire?

 

Las propiedades de sesión de Livewire le permiten almacenar datos de componentes en la sesión del usuario. Esto significa que los datos persisten incluso cuando se vuelve a cargar la página, lo que lo hace perfecto para formularios de varios pasos, preferencias de usuario o cualquier escenario en el que necesite mantener el estado tras las actualizaciones de la página.

 

#Implementación de propiedades de sesión en Livewire

 

Livewire facilita enormemente el uso de las propiedades de sesión. A continuación, se muestra un ejemplo básico:

 

use Livewire\Component;
use Livewire\Attributes\Session;

class MultiStepForm extends Component
{
    #[Session]
    public $step = 1;

    #[Session]
    public $formData = [];

    public function nextStep()
    {
        $this->step++;
    }

    public function previousStep()
    {
        $this->step--;
    }

    public function render()
    {
        return view('livewire.multi-step-form');
    }
}

 

Analicemos lo que sucede aquí:

 

  1. Usamos el atributo #[Session] para marcar las propiedades que se deben almacenar en la sesión.
  2. La propiedad $step realiza un seguimiento del paso actual del formulario.
  3. El array $formData almacena la entrada del usuario en diferentes pasos.
  4. Los métodos nextStep() y previousStep() permiten navegar entre los pasos del formulario.

 

#Beneficios de utilizar propiedades de sesión

 

  1. Experiencia de usuario mejorada: los usuarios no pierden su progreso si actualizan la página por accidente.
  2. Gestión de estado simplificada: no es necesario guardar y restaurar manualmente el estado al recargar la página.
  3. Carga de servidor reducida: evita llamadas API innecesarias para recuperar datos ingresados ​​previamente.
  4. Flexibilidad: es fácil implementar procesos complejos de varios pasos sin depender del almacenamiento en el back-end.

 

#Ejemplo de la vida real: Formulario de registro de varios pasos

 

Consideremos un escenario del mundo real donde las propiedades de la sesión pueden mejorar significativamente la experiencia del usuario: un formulario de registro de varios pasos para una aplicación SaaS.

 

use Livewire\Component;
use Livewire\Attributes\Session;

class RegistrationForm extends Component
{
    #[Session]
    public $step = 1;

    #[Session]
    public $user = [
        'name' => '',
        'email' => '',
        'password' => '',
        'company' => '',
        'role' => '',
        'plan' => '',
    ];

    public function nextStep()
    {
        if ($this->step == 1) {
            $this->validate([
                'user.name' => 'required',
                'user.email' => 'required|email|unique:users,email',
                'user.password' => 'required|min:8',
            ]);
        } elseif ($this->step == 2) {
            $this->validate([
                'user.company' => 'required',
                'user.role' => 'required',
            ]);
        }

        $this->step++;
    }

    public function previousStep()
    {
        $this->step--;
    }

    public function register()
    {
        $this->validate([
            'user.plan' => 'required',
        ]);

        // Create user and redirect
        User::create($this->user);
        return redirect()->route('dashboard');
    }

    public function render()
    {
        return view('livewire.registration-form');
    }
}

 

En este ejemplo:

 

  1. Usamos propiedades de sesión para almacenar tanto el paso actual como todos los datos ingresados ​​por el usuario.
  2. El formulario se divide en tres pasos: información personal, detalles de la empresa y selección de plan.
  3. Cada paso tiene sus propias reglas de validación.
  4. Los usuarios pueden navegar hacia adelante y hacia atrás entre los pasos sin perder los datos ingresados.


    Si el usuario actualiza la página en cualquier momento, volverá al mismo paso con todos los datos intactos.
    Este enfoque mejora significativamente la experiencia del usuario durante el registro. Si un usuario se interrumpe o necesita verificar alguna información antes de completar el registro, puede volver más tarde sin perder su progreso. También permite un proceso de registro más complejo sin abrumar al usuario con un formulario único y extenso.

 

#Conclusión

 

Las propiedades de sesión de Livewire ofrecen una forma eficaz de mejorar la experiencia del usuario en las aplicaciones de Laravel. Al permitir que el estado persista tras recargas de página, podemos crear interfaces más sólidas y fáciles de usar para procesos complejos, como formularios de varios pasos.

Antonio Jenaro

Antonio Jenaro

Web Developer

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión