Laravel Компонент Livewire не обновляется / перезагружается автоматически после обновления - PullRequest
4 голосов
/ 25 февраля 2020

Итак, в настоящее время я использую Laravel Livewire в одном из моих проектов. Но когда я пытаюсь передать событие из одного компонента в другой компонент с помощью magi c mathod $refresh, его обновление (полученное в запросе xhr dom) общего компонента, но интерфейс не обновляет в реальном времени.

ProductReviewForm. php Компонент

  public function save()
    {
        //some functionalities .... 


        $this->emit('reviewSectionRefresh');


    }

ProductReviewSection. php Компонент

 protected $listeners = [
        'reviewSectionRefresh' => '$refresh',
    ];

    public function render()
    {
        $this->review_lists = ProductReview::orderBy('id', 'DESC')->get();

        return view('livewire.desktop.product-review-section');
    }

Итак, я хочу выдать событие reviewSectionRefresh, которое будет отправлено всякий раз, когда я вызываю функцию save() из первого компонента, которая должна прослушиваться $listeners из другого компонента. Это работает нормально. также в xhr я получаю обновленный dom, но компонент во внешнем интерфейсе не обновляется. Надеюсь, что любой, кто работает с Livewire, может помочь с этим.

1 Ответ

6 голосов
/ 26 февраля 2020

Так что, похоже, я неправильно написал свое представление компонентов лезвия.

все вещи в обновленном компоненте должны быть заключены в один элемент div следующим образом:

<div> 
{{-- Anything you want to do --}}

</div>  

ранее мой блейд-файл был похож. Что неверно

<div class=""> 
 {{ -- some dom elements -- }}
</div>

<div class=""> 
{{ -- some other dom elements -- }}
</div>

но это должно быть похоже.

<div>
    <div class=""> 
       {{ -- some dom elements -- }}
    </div>

    <div class=""> 
    {{ -- some other dom elements -- }}
    </div>
</div>

Итак, что бы вы ни писали, это должно быть внутри ОДНОГО РОДИТЕЛЬСКОГО РАЗДЕЛЕНИЯ

...