root
4 سال پیش توسط root مطرح شد
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 }}">

ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 4 سال پیش آپدیت شد
0

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

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

root
@root 4 سال پیش آپدیت شد
0

@juza66
بله

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

سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 4 سال پیش مطرح شد
0

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


root
@root 4 سال پیش مطرح شد
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 4 سال پیش مطرح شد
0

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

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


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

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