Сесійні властивості Livewire для збереження стану компонентів

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 26 вересня, 2025
Досліджуйте, як властивості сесії в Livewire спрощують збереження даних компонентів завдяки автоматичному управлінню станом під час оновлень сторінки. Чи готові ви взяти під контроль управління станом у своїх вебдодатках? Читайте статтю, щоб дізнатися більше

Зберігати дані компонента між оновленнями сторінки стало легко завдяки властивостям сесії в Livewire. Це рішення автоматично зберігає стан компонента в сесії користувача, позбавляючи необхідності ручного управління сесією.

Властивості сесії в Livewire використовують просту анотацію атрибута для зберігання даних компонента. Атрибут #[Session] автоматично обробляє зберігання та отримання даних з сесії.

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

class ProductFilter extends Component
{
    #[Session]
    public $category = '';

    #[Session]
    public $priceRange = [];

    public function applyFilters()
    {
        $this->dispatch('filters-updated');
    }

    public function render()
    {
        return view('livewire.product-filter');
    }
}

Атрибут #[Session] керує всіма операціями з сесією автоматично. Коли користувач застосовує фільтри і оновлює сторінку, їх вибір зберігається без додаткових налаштувань.

Процес оформлення замовлення в електронній комерції демонструє, як властивості сесії підтримують стан кошика протягом усього процесу покупок:

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

class ShoppingCart extends Component
{
    #[Session]
    public $items = [];

    #[Session]
    public $shippingMethod = 'standard';

    #[Session]
    public $couponCode = '';

    public function addItem($productId, $quantity = 1)
    {
        $this->items[$productId] = [
            'quantity' => $quantity,
            'price' => Product::find($productId)->price,
        ];
    }

    public function updateShipping($method)
    {
        $this->shippingMethod = $method;
        $this->calculateTotals();
    }

    public function applyCoupon()
    {
        if ($this->validateCoupon($this->couponCode)) {
            $this->dispatch('coupon-applied');
        }
    }

    protected function calculateTotals()
    {
        return collect($this->items)->sum(fn($item) => $item['price'] * $item['quantity']);
    }

    public function render()
    {
        return view('livewire.shopping-cart', [
            'total' => $this->calculateTotals(),
        ]);
    }
}

Властивості сесії підтримують кастомні ключі для більшого контролю над організацією зберігання:

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

class UserPreferences extends Component
{
    #[Session(key: 'user-theme')]
    public $theme = 'light';

    #[Session(key: 'dashboard-layout')]
    public $layout = 'grid';

    public function switchTheme()
    {
        $this->theme = $this->theme === 'light' ? 'dark' : 'light';
    }

    public function render()
    {
        return view('livewire.user-preferences');
    }
}

Динамічні ключі сесії дозволяють контекстно усвідомлене зберігання на основі властивостей компонента:

use Livewire\Component;
use Livewire\Attributes\Session;
use App\Models\Project;

class ProjectSettings extends Component
{
    public Project $project;

    #[Session(key: 'project-settings-{project.id}')]
    public $configuration = [];

    public function mount(Project $project)
    {
        $this->project = $project;
    }

    public function updateConfiguration($key, $value)
    {
        $this->configuration[$key] = $value;
    }

    public function render()
    {
        return view('livewire.project-settings');
    }
}

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

Властивості сесії підтримують стан компонента під час оновлень сторінки та навігації браузером. Автоматичне збереження спрощує багатоетапні процеси, пропонуючи розробникам оптимальне рішення для управління станом.

Популярні

Logomark Logotype

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку