دسته بندی ها
18:07 1399/12/20

کاربرد متد StatedHasChanged در Blazor چیست ؟

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : Blazor

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2889
هوش مصنوعی

پاسخ هوش مصنوعی

متد StateHasChanged در Blazor برای اعلام به (Component) استفاده می شود که وضعیت خود تغییر کرده است و نیاز به بازگذاری مجدد دارد. این متد باعث می شود که Blazor کامپوننت را دوباره رندر کند و تغییرات جدید را نمایش دهد.

شما باید از این متد در شرایط زیر استفاده کنید:

  • زمانی که یک رویداد غیر وابسته به Blazor (مثل یک رویداد JavaScript یا یک تایمر) وضعیت کامپوننت را تغییر می دهد.
  • هنگامی که شما تغییراتی در داده ها یا شرایط منطقی کامپوننت ایجاد کرده اید و می خواهید آن را به کاربر نمایش دهید.

به عنوان مثال، فرض کنید از یک API خارجی داده دریافت می کنید و می خواهید پس از دریافت داده، UI را به روز کنید. در این صورت، پس از به روزرسانی وضعیت داده ها، می توانید از StateHasChanged استفاده کنید تا تغییرات جدید نمایان شوند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 20:31 1399/12/20

کاربرد متد StatedHasChanged در Blazor

همون طوری که میدونید توسط Blazor شما میتونید صفحات SPA یا Single PAge Application رو ایجاد کنید. خاصیت SPA ها این هست که بدون رفرش شدن صفحه میتونن اطلاعات رو نمایش بدن. حالا گاهی اوقات ممکنه شما قصد داشته باشید یک حالت رفرش رو در صفحه پیاده سازی کنید. البته نه اینکه صفحه کلا رفرش بشه. اطلاعات صفحه رو میخواید بروزرسانی کنید. در این موارد میتونید از StatedHasChanged استفاده کنید.

در واقع StatedHasChanged به Blazor میگه که اطلاعات رو دوباره بروز رسانی کن چون تغییراتی صورت گرفته.

 

چه زمانی باید از StatedHasChanged در Blazor استفاده کرد ؟

  • دقت کنید عموما این متد به صورت اتوماتیک فراخوانی می شود. مثلا زمانی که شما یک Button را در صفحه می زنید و اطلاعات از دیتابیس فراخوانی می شود و یا Component فراخوانی می شود اتوماتیک این متد اجرا می شود.
  • یکی دیگر از حالاتی که این متد قراخوانی می شود بعد از شروع فراخوانی یک UI می باشد. این متد بعد از فراخوانی دستورات UI باعث نمایش  به روز رسانی صفحه می شود.
  • هنگامی که یک یا چند کامپوننت را می خواهیم در یک Razor PAge نمایش دهیم بعد از فراخوانی کامپوننت ها این متد جهت به روز رسانی صفحه فراخوانی می شود.
  • از این متد به صورت دستی هم میتوانید استفاده کنید. به عنوان مثال فرض کنید در صفحه از یک کامپوننت استفاده می شود که برخی اطلاعات موجود در این کامپوننت از دیتابیس گرفته می شود. شما هر گاه و در حالتی نیاز داشتید که مطمئن باشید اطلاعات از دیتابیس فراخوانی شده است یا خیر می توانید به صورت دستی از این متد استفاده کنید.

 

به مثال زیر دقت کنید 

@code { 
    protected override void OnInitialized()
    {
        StatedHasChanged();
        Console.WriteLine("Section 1");
    }
}

 

در مثال بالا مشخص کردیم که در حالت Load صفحه یکبار محتوای صفحه به روز رسانی شود.

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود