Оновлення форм в реальному часі за допомогою `wire:model.live` у Laravel Livewire

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 09 вересня, 2025
Вам коли-небудь було цікаво, як забезпечити миттєвий зворотний зв'язок у веб-додатках? У нашій статті ви дізнаєтеся, як модифікатор wire:model.live у Laravel Livewire революціонізує взаємодію з формами, роблячи їх динамічними та чутливими до дій користувачів у реальному часі

Сучасні веб-додатки вимагають миттєвого зворотного зв'язку та безперервної інтерактивності. Модифікатор wire:model.live у Laravel Livewire перетворює звичайні форми на чуйні, реальні інтерфейси, які синхронізуються з вашим сервером в режимі реального часу під час взаємодії користувачів.

Модифікатор .live дозволяє негайно оновлювати властивості під час введення даних, створюючи динамічний досвід, коли інформація миттєво передається між фронтендом і бекендом без необхідності надсилати форми чи виконувати ручні дії.

<input type="text" wire:model.live="searchQuery">

Цей підхід революціонізує взаємодію користувачів із формами, забезпечуючи миттєвий зворотний зв'язок валідації, результати живого пошуку та синхронізацію даних. Кожен натиск клавіші викликає запит до сервера, підтримуючи ідеальну відповідність стану компонента даним, введеним користувачем.

Livewire за замовчуванням включає розумне регулювання затримки (debouncing), чекаючи 150 мілісекунд після того, як введення зупиниться, перш ніж надсилати запити до сервера. Це запобігає надмірному мережевому трафіку і зберігає чуйність користувацького інтерфейсу. Затримку можна налаштувати відповідно до специфічних вимог програми:

<input type="text" wire:model.live.debounce.300ms="userInput">

Уявіть, що ви будуєте інтерфейс пошуку продуктів, де результати оновлюються миттєво, поки покупці вводять запит. Це створює захоплюючий досвід покупок, що дозволяє користувачам швидко знаходити продукти без традиційних натискань кнопок для пошуку.

Відповідний компонент Livewire обробляє логіку пошуку в реальному часі, фільтруючи продукти на основі введених даних і підтримуючи оптимальну продуктивність завдяки стратегічному регулюванню затримки. Як тільки користувач починає вводити запити, інтерфейс моментально відображає відповідні продукти без перезавантаження сторінки або затримок у завантаженні.

class ProductSearch extends Component
{
    public $searchTerm = '';
    public $searchResults = [];
    public $maxResults = 20;
 
    public function updatedSearchTerm()
    {
        if (strlen($this->searchTerm) >= 2) {
            $this->searchResults = Product::where('name', 'like', '%' . $this->searchTerm . '%')
                ->orWhere('description', 'like', '%' . $this->searchTerm . '%')
                ->where('status', 'active')
                ->limit($this->maxResults)
                ->get();
        } else {
            $this->searchResults = [];
        }
    }
 
    public function addToCart($productId)
    {
        Cart::add($productId, auth()->id());
        $this->dispatch('cart-updated');
    }
 
    public function render()
    {
        return view('livewire.product-search');
    }
}

Модифікатор wire:model.live безшовно інтегрується з системою валідації Livewire, надаючи можливість реальної валідації форм, що супроводжує користувачів до коректних форматів введення. Це поєднання створює інтуїтивні інтерфейси, які запобігають помилкам ще до їх виникнення, зберігаючи при цьому високий рівень продуктивності завдяки оптимізації запитів