راکت

مشکل در لایو وایر

5 پاسخ

سلام وقت بخیر
ما در یک جدول که برای سیستم نظرات هست با لایو وایر پیاده کردیم توضیح تصویر رو وارد کنید

که بخش ۲ در یک کامپوننت و بخش ۳ در کامپونتت دیگر (زیرمجموعه کامپوننت ۲ هست)هست و کل این دو کامپوننت در کامپوننت مادر یعنی ۱ هستند
الان اگر بخواهیم تیک مورد ۱ را بزنیم که همه انتخاب شوند برای کار های دست جمعی تمام کامپوننت ها رندر میشوند
باید دقیقا چطور صدا بزنیم که رندر نشوند
راهی که به مد نظر ماست:
ما وقتی تیک میزنیم یک 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 }}">
root
root
@root
ثبت پرسش جدید

پاسخ‌ها

5
سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

توی حلقه ای که کامپونت های فرزند رو لود میکنی از key استفاده کردی؟

@foreach($contacts as $contact)
        <livewire:contact.single-contact :contact="$contact" :key="$contact->id" />
@endforeach
root
root
@root

@juza66
بله

@foreach($comments as $comment)
     <livewire:front.admin.comment.single :comment="$comment" :key="'single-'.time(). $comment->comment_ID"/>
@endforeach

شاید پاسخ شما همین‌جا باشد

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

کدهای کامپونت فرزند رو بذار ببینم توی یک div گذاشتین یا خیر

root
root
@root
سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

الان دقیقا از این روشی که گفتم دارم استفاده میکنم و فقط card که تیکش رو میزنم برای من برگشت داده میشه

توضیح تصویر رو وارد کنید

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام