سلام وقت بخیر
ما در یک جدول که برای سیستم نظرات هست با لایو وایر پیاده کردیم
که بخش ۲ در یک کامپوننت و بخش ۳ در کامپونتت دیگر (زیرمجموعه کامپوننت ۲ هست)هست و کل این دو کامپوننت در کامپوننت مادر یعنی ۱ هستند
الان اگر بخواهیم تیک مورد ۱ را بزنیم که همه انتخاب شوند برای کار های دست جمعی تمام کامپوننت ها رندر میشوند
باید دقیقا چطور صدا بزنیم که رندر نشوند
راهی که به مد نظر ماست:
ما وقتی تیک میزنیم یک event صادر میشه
حالا هر کامپوننتی داره به این event گوش میده، بعد از اقدامی که براش تعریف کردیم (توی لیسنر) بصورت خودکار متد render فراخوانی میشه
که همین باعث کندی شده
این به چرخه زندگی کامپوننت بستگی داره
بعد از اجرای هر متد انگار دوباره render صدا زده میشه
بنابراین ما دنبال راهی میگردیم که ممانعت ایجاد کنیم از اجرای render در برخی مواقع مورد نیاز
در واقع بعد از اجرای برخی متدهایی که بعد از eventهامون اجرا میشه
این تیک که مربوط به تیک زدن تمام کامپوننت هاست
<input type="checkbox" wire:model.defer="selectAll" wire:click="selectAllClicked"/>
این کد در بخش کامپوننت فرزند هست
public function getListeners()
{
return ['response.submitted:' . $this->comment->comment_ID => '$refresh',
'selectAllCheckChanged'];
}
اینم ویو کامپوننت دوم که داره رندر میشه
<input type="checkbox" value="{{ $comment->comment_ID }}"
wire:model.defer="selected" wire:click.prevent="commentClicked"
class="checkthis" id="{{ $comment->comment_ID }}">
توی حلقه ای که کامپونت های فرزند رو لود میکنی از key استفاده کردی؟
@foreach($contacts as $contact)
<livewire:contact.single-contact :contact="$contact" :key="$contact->id" />
@endforeach
@juza66
بله
@foreach($comments as $comment)
<livewire:front.admin.comment.single :comment="$comment" :key="'single-'.time(). $comment->comment_ID"/>
@endforeach
الان دقیقا از این روشی که گفتم دارم استفاده میکنم و فقط card که تیکش رو میزنم برای من برگشت داده میشه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟