Начальная инициализация в Livewire
Пусть на странице есть блок, который показывает, когда его открыли, и рядом счётчик с кнопкой. Человек жмёт кнопку снова и снова, а подпись со временем должна остаться той же, что при первом показе. Если время пересчитывать при каждом обновлении, момент открытия теряется.
При первом появлении компонента
на странице Livewire вызывает
метод mount. В нём можно
один раз записать нужные значения
в свойства. Дальнейшие клики
и обновления фрагмента этот
шаг не повторяют, пока страница
её не перезагрузят целиком.
Давайте соберём компонент
PostOpen и выведем его
на обычной странице, не как
отдельный адрес:
php artisan make:livewire PostOpen --class
Давайте добавим маршрут:
<?php
Route::get('/open', function () {
return view('open');
});
?>
Давайте на странице вставим
компонент через тег livewire:
<x-layout>
<livewire:post-open />
</x-layout>
Давайте в классе заведём свойства и
метод mount, который
запишет время через date:
<?php
namespace App\Livewire;
use Livewire\Component;
class PostOpen extends Component
{
public $opened;
public $count = 0;
public function mount()
{
$this->opened = date('H:i:s');
}
public function inc()
{
$this->count++;
}
public function render()
{
return view('livewire.post-open');
}
}
?>
Давайте в шаблоне выведем время, счётчик и кнопку:
<div>
<div>{{ $opened }}</div>
<div>{{ $count }}</div>
<button type="button" wire:click="inc">
Add
</button>
</div>
Создайте компонент EmployeeCard.
При первом появлении на странице
в нём должна оказаться подпись
Desk, и кнопка эту подпись
не стирает.