3.8. Вычисляемые свойства
Вычисляемые свойства — это способ создания «производных» свойств в Livewire. Подобно аксессорам в модели Eloquent, вычисляемые свойства позволяют получать значения и кэшировать их для повторного использования в рамках одного запроса.
Вычисляемые свойства особенно полезны в сочетании с публичными свойствами компонента.
1. Базовое использование
Чтобы создать вычисляемое свойство, добавьте атрибут #[Computed] над любым методом в вашем компоненте Livewire. После этого вы сможете обращаться к этому методу так же, как к обычному свойству.
Убедитесь, что вы импортировали все используемые атрибуты. Например, для атрибута #[Computed] необходимо добавить следующий импорт: use Livewire\Attributes\Computed;.
Например, вот компонент ShowUser, который использует вычисляемое свойство user() для доступа к Eloquent-модели User на основе свойства $userId:
<?php use Illuminate\Support\Facades\Auth;use Livewire\Attributes\Computed;use Livewire\Component;use App\Models\User; class ShowUser extends Component{ public $userId; #[Computed] public function user() { return User::find($this->userId); } public function follow() { Auth::user()->follow($this->user); } public function render() { return view('livewire.show-user'); }}
<div> <h1>{{ $this->user->name }}</h1> <span>{{ $this->user->email }}</span> <button wire:click="follow">Follow</button></div>
Поскольку к методу user() добавлен атрибут #[Computed], его значение доступно в других методах компонента и в Blade-шаблоне.
$thisВ отличие от обычных свойств, вычисляемые свойства напрямую недоступны в шаблоне компонента. Вместо этого к ним нужно обращаться через объект $this. Например, к вычисляемому свойству posts() нужно обращаться как $this->posts внутри шаблона.
Livewire\Form.Попытка использовать вычисляемое свойство внутри Form приведёт к ошибке при обращении к этому свойству в Blade-шаблоне с помощью синтаксиса $form->property.