Метод booted
Метод booted вызывается в классе компонента после завершения
метода mount и инициализации всех свойств.
Этот метод доступен только в самом компоненте и выполняется
при каждом запросе к компоненту (как при первоначальной загрузке,
так и при последующих обновлениях через AJAX).
В отличие от mount, метод booted не принимает
параметры и выполняется после того, как все свойства уже
получили свои значения.
Синтаксис
<?php
namespace AppLivewire;
use LivewireComponent;
class ExampleComponent extends Component
{
public function booted()
{
// код, который выполняется после инициализации
}
}
?>
Пример
Давайте создадим компонент, в котором метод booted
будет модифицировать свойство после его инициализации:
<?php
namespace AppLivewire;
use LivewireComponent;
class UserComponent extends Component
{
public $name = 'guest';
public $role = 'user';
public function booted()
{
$this->name = ucfirst($this->name);
$this->role = 'admin';
}
public function render()
{
return view('livewire.user-component');
}
}
?>
<div>
<p>Name: {{ $name }}</p>
<p>Role: {{ $role }}</p>
</div>
Результат выполнения кода:
<div>
<p>Name: Guest</p>
<p>Role: admin</p>
</div>
Пример
Метод booted выполняется при каждом обновлении компонента.
Давайте добавим счётчик, чтобы увидеть это в действии:
<?php
namespace AppLivewire;
use LivewireComponent;
class CounterComponent extends Component
{
public $counter = 0;
public $bootedCount = 0;
public function booted()
{
$this->bootedCount++;
}
public function increment()
{
$this->counter++;
}
public function render()
{
return view('livewire.counter-component');
}
}
?>
<div>
<p>Counter: {{ $counter }}</p>
<p>Booted calls: {{ $bootedCount }}</p>
<button wire:click="increment">Increment</button>
</div>
При каждом нажатии на кнопку метод booted будет вызываться
снова, увеличивая значение $bootedCount.
Пример
Метод booted идеально подходит для инициализации данных,
которые зависят от уже установленных свойств компонента:
<?php
namespace AppLivewire;
use LivewireComponent;
class ProductComponent extends Component
{
public $price = 100;
public $discount = 10;
public $finalPrice;
public function booted()
{
$this->finalPrice = $this->price - ($this->price * $this->discount / 100);
}
public function render()
{
return view('livewire.product-component');
}
}
?>
<div>
<p>Price: {{ $price }}</p>
<p>Discount: {{ $discount }}%</p>
<p>Final price: {{ $finalPrice }}</p>
</div>
Результат выполнения кода:
<div>
<p>Price: 100</p>
<p>Discount: 10%</p>
<p>Final price: 90</p>
</div>
Смотрите также
-
метод
boot,
который вызывается при создании компонента до инициализации свойств -
метод
mount,
который вызывается при инициализации компонента и принимает параметры -
метод
hydrate,
который вызывается при восстановлении состояния компонента из хранилища -
метод
dehydrate,
который вызывается перед сохранением состояния компонента