Можем ли мы загрузить компонент Livewire, нажав на какую-либо кнопку?

#laravel-livewire #livewires

Вопрос:

У меня есть компонент Livewire с кнопкой, и я хочу добавить форму (то есть другой компонент livewire), нажав на эту кнопку. Например, мы делаем это с помощью ajax, запрашивая серверную часть для загрузки HTML и добавления с помощью jQuery. Итак, вопрос в том, можем ли мы сделать то же самое с Livewire?

 <div>
    <button wire:click="loadFormComponent">Add a Link</button>
    <div>
        here I want to append the result of `loadFormComponent`
    </div>
</div>
 

ниже приведен компонент формы

 <div>
    <form wire:submit.prevent="addLink">
        <div>
            <input type="URL" wire:model="URL" placeholder="https://example.com">
            <button type="submit">Save Link</button>
        </div>
    </form>
</div>
 

Ответ №1:

Да, вы можете отображать части вашего лезвия, включая другие компоненты Livewire, при определенных условиях. Для этого вам не нужен AJAX. Вы делаете раздел вашего блейд-файла условным:

 <div>
    <button wire:click="$set('showFormComponent', true)">Add a Link</button>
    @if ($showFormComponent)
    <div>
        here I want to append the result of `loadFormComponent`
    </div>
    @endif
</div>
 

и в вашем компоненте livewire вам нужно добавить:

 public $showFormComponent;
 

По щелчку мыши переменная $showFormComponent будет установлена в true значение, и представление будет повторно отображено, включая компонент.