РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
198 of 274 menu

Атрибут #[Isolate]

Атрибут #[Isolate] в Livewire предназначен для маркировки свойств компонента, которые должны быть исключены из процесса синхронизации состояния между сервером и клиентом. Это полезно, когда свойство используется только на сервере для внутренних вычислений и не должно передаваться на фронтенд или обновляться через сетевые запросы. Атрибут применяется к публичным свойствам класса компонента и не принимает параметров.

Синтаксис

<?php use Livewire\Attributes\Isolate; use Livewire\Component; class ExampleComponent extends Component { #[Isolate] public $serverOnlyProperty; public function render() { return view('livewire.example'); } } ?>

Пример

Давайте создадим компонент, в котором одно свойство будет изолировано, а другое - обычное. При обновлении через wire:click изолированное свойство не будет синхронизироваться с клиентом:

<?php namespace App\Livewire; use Livewire\Attributes\Isolate; use Livewire\Component; class IsolateDemo extends Component { public $normalProperty = 0; #[Isolate] public $isolatedProperty = 0; public function incrementBoth() { $this->normalProperty++; $this->isolatedProperty++; } public function render() { return view('livewire.isolate-demo'); } } ?>
<div> <p>Normal: {{ $normalProperty }}</p> <p>Isolated: {{ $isolatedProperty }}</p> <button wire:click="incrementBoth">Increment Both</button> </div>

После первого клика на кнопку оба свойства увеличатся на 1, но при последующих обновлениях изолированное свойство останется на сервере без синхронизации с клиентом:

<div> <p>Normal: 1</p> <p>Isolated: 0</p> <button>Increment Both</button> </div>

Пример

Используем #[Isolate] для хранения временных данных, которые не должны влиять на состояние интерфейса:

<?php namespace App\Livewire; use Livewire\Attributes\Isolate; use Livewire\Component; class TempData extends Component { #[Isolate] public $tempCounter = 0; public function incrementTemp() { $this->tempCounter++; } public function render() { return view('livewire.temp-data'); } } ?>
<div> <button wire:click="incrementTemp">Increment Temp</button> <p>Temp: {{ $tempCounter }}</p> </div>

При клике на кнопку значение $tempCounter увеличится на сервере, но не обновится на клиенте, так как свойство изолировано:

<div> <button>Increment Temp</button> <p>Temp: 0</p> </div>

Смотрите также

  • атрибут #[Reactive],
    который делает свойство реактивным для обновлений
  • атрибут #[Locked],
    который блокирует изменение свойства
  • атрибут #[Url],
    который синхронизирует свойство с URL-параметрами
  • атрибут #[Session],
    который сохраняет свойство в сессии
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить