Метод mount
Метод mount является жизненным цикловым методом компонента Livewire.
Он вызывается автоматически при первом создании экземпляра компонента
перед отображением его шаблона.
В отличие от конструктора __construct, метод mount предназначен
для безопасной инициализации свойств компонента, а также для приема
параметров, переданных из Blade-шаблона.
Этот метод выполняется только один раз за время жизни компонента
на странице и не вызывается при последующих обновлениях через AJAX.
Метод mount может принимать произвольные параметры,
которые передаются при внедрении компонента в шаблон через
атрибуты, например, <livewire:counter :start="10" />.
Все переданные параметры должны быть скалярными значениями
или массивами, которые можно сериализовать.
Обратите внимание, что для безопасности Livewire по умолчанию
защищает свойства от изменения через параметры, если они
не объявлены в свойстве $rules или не имеют атрибута
#[Modelable].
Синтаксис
<?php
namespace AppLivewire;
use LivewireComponent;
class ComponentName extends Component
{
public $property;
public function mount($param)
{
$this->property = $param;
}
public function render()
{
return view('livewire.component-name');
}
}
?>
Пример
Создадим компонент с начальным значением счетчика,
передаваемым из шаблона через параметр start:
<?php
namespace AppLivewire;
use LivewireComponent;
class Counter extends Component
{
public $num;
public function mount($start = 0)
{
$this->num = $start;
}
public function inc()
{
$this->num++;
}
public function render()
{
return view('livewire.counter');
}
}
?>
<div>
<button wire:click="inc">+</button>
<span>{{ $num }}</span>
</div>
Внедрение компонента с передачей начального значения:
<livewire:counter :start="10" />
Результат выполнения кода:
<button>
+
</button>
<span>10</span>
Пример
Метод mount может принимать несколько параметров
для инициализации нескольких свойств компонента.
Например, создадим компонент пользователя с именем и возрастом:
<?php
namespace AppLivewire;
use LivewireComponent;
class UserProfile extends Component
{
public $name;
public $age;
public function mount($name, $age = 18)
{
$this->name = $name;
$this->age = $age;
}
public function render()
{
return view('livewire.user-profile');
}
}
?>
<div>
<p>Name: {{ $name }}</p>
<p>Age: {{ $age }}</p>
</div>
Внедрение компонента с передачей параметров:
<livewire:user-profile :name="'John'" :age="25" />
Результат выполнения кода:
<p>Name: John</p>
<p>Age: 25</p>