Вычисляемое свойство в Livewire
Давайте разберём такой случай. Список заголовков нужен на странице, но хранить его в поле компонента незачем: он каждый раз собирается из тех же данных.
Атрибут Computed вешают на метод: в шаблоне к нему обращаются как к свойству, а тело метода возвращает свежее значение без лишнего поля в состоянии компонента.
Давайте создадим компонент
PostTitles:
php artisan make:livewire PostTitles --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/titles', function () {
return view('posts-titles');
});
?>
<x-layout>
<livewire:post-titles />
</x-layout>
Давайте опишем метод с атрибутом Computed:
<?php
namespace App\Livewire;
use Livewire\Attributes\Computed;
use Livewire\Component;
class PostTitles extends Component
{
#[Computed]
public function titles()
{
return ['News', 'Photo'];
}
public function render()
{
return view('livewire.post-titles');
}
}
?>
Давайте пройдёмся по списку в шаблоне:
<div>
@foreach ($this->titles as $title)
<div wire:key="{{ $title }}">
{{ $title }}
</div>
@endforeach
</div>
Создайте компонент EmployeeTitles.
Имена работников на странице
считаются методом, а не лежат
в обычном поле.