رامین اسلامی

DynamicComponent در Blazor: راهنمای کامل استفاده از کامپوننت‌های پویا

با قابلیت قدرتمند DynamicComponent در Blazor آشنا شوید. نحوه نمایش پویای کامپوننت‌ها، مدیریت پارامترها و بهترین روش‌ها برای توسعه برنامه‌های ماژولار و انعطاف‌پذیر را در دورآموز بیاموزید.

DynamicComponent در Blazor: راهنمای کامل استفاده از کامپوننت‌های پویا - مدرسه آنلاین دورآموز

در دنیای توسعه برنامه‌های وب مدرن با Blazor، یکی از چالش‌برانگیزترین سناریوها، نمایش کامپوننت‌ها به صورت پویا و در زمان اجرا (Runtime) است. آیا تا به حال خواسته‌اید بخش‌های مختلفی از اپلیکیشن شما بر اساس داده‌های دریافتی از سرور یا اقدامات کاربر، کامپوننت‌های مختلفی را نمایش دهند؟ اینجاست که DynamicComponent در Blazor به عنوان یک قهرمان قدرتمند وارد عمل می‌شود.

در این مقاله از دورآموز، به طور کامل با DynamicComponent آشنا شده و یاد می‌گیرید چگونه از آن برای ایجاد اپلیکیشن‌های ماژولار، انعطاف‌پذیر و پویا استفاده کنید.

آموزش آنلاین برنامه نویسی بلیزور از 0 تا 100 به همراه ساخت یک CMS پنل کاربری در مدرسه آنلاین دورآموز

DynamicComponent چیست؟

DynamicComponent یک کامپوننت داخلی در Blazor است (از .NET 6 به بعد) که به شما امکان می‌دهد یک کامپوننت را بر اساس نوع (Type) آن به صورت پویا رندر کنید. این کار دیگر نیازی به استفاده از دستورات شرطی پیچیده (if/else یا switch) برای هر کامپوننت احتمالی ندارد.

مقایسه اجمالی:

روش قدیمی: یک switch statement بزرگ که ده‌ها کامپوننت مختلف را چک می‌کند.

روش مدرن با Blazor: استفاده ساده و تمیز از <DynamicComponent>.

یک مثال عملی از DynamicComponent در Blazor
فرض کنید در حال ساخت یک پنل مدیریت هستید که بسته به نوع ویجت انتخاب شده توسط کاربر (مثلاً نمودار، جدول آمار، لیست آخرین کاربران)، یک کامپوننت متفاوت نمایش داده شود.

// Widgets/ChartWidget.razor
<h3>ویجت نمودار</h3>
<p>این یک نمودار زیبا است.</p>

// Widgets/TableWidget.razor
<h3>ویجت جدول</h3>
<p>این جدولی از داده‌ها است.</p>

// Widgets/UserListWidget.razor
<h3>لیست کاربران</h3>
<ul>
    <li>کاربر ۱</li>
    <li>کاربر ۲</li>
</ul>

کامپوننت والد با قابلیت پویا:

در کامپوننت اصلی (Parent)، از DynamicComponent برای نمایش پویا استفاده می‌کنیم

// DynamicDashboard.razor
@page "/dashboard"

<h2>داشبورد پویا</h2>

<select @onchange="OnWidgetChanged">
    <option value="ChartWidget">نمودار</option>
    <option value="TableWidget">جدول</option>
    <option value="UserListWidget">لیست کاربران</option>
</select>

<div class="mt-3">
    <DynamicComponent Type="SelectedWidgetType" />
</div>

@code {
    private Type? SelectedWidgetType { get; set; }

    // یک دیکشنری برای مپ کردن نام ویجت به تایپ آن
    private readonly Dictionary<string, Type> _widgetTypes = new()
    {
        { "ChartWidget", typeof(ChartWidget) },
        { "TableWidget", typeof(TableWidget) },
        { "UserListWidget", typeof(UserListWidget) }
    };

    private void OnWidgetChanged(ChangeEventArgs e)
    {
        var selectedWidgetName = e.Value?.ToString();
        if (selectedWidgetName != null && _widgetTypes.ContainsKey(selectedWidgetName))
        {
            SelectedWidgetType = _widgetTypes[selectedWidgetName];
        }
        else
        {
            SelectedWidgetType = null;
        }
    }
}

توضیح کد:

  • یک Dropdown داریم که کاربر می‌تواند نوع ویجت را انتخاب کند.

  • با هر تغییر، متد OnWidgetChanged فراخوانی می‌شود.

  • این متد، نام انتخاب‌شده را به Type مربوطه مپ کرده و در پراپرتی SelectedWidgetType قرار می‌دهد.

  • کامپوننت <DynamicComponent> با اتصال به این پراپرتی، به طور خودکار کامپوننت مناسب را رندر می‌کند.

دورآموز مرجع تخصصی آموزش آنلاین برنامه نویسی با برگزاری دوره هایی از چندین کشور نظیر آلمان،انگلستان،مالزی،استرالیا،ایتالیا،کاناداو...

ارسال پارامتر به کامپوننت پویا

یکی از قدرتمندترین ویژگی‌های DynamicComponent، قابلیت ارسال پارامترها به کامپوننت مقصد است. این کار را با استفاده از Parameters انجام می‌دهیم

// کامپوننت والد
<DynamicComponent Type="SelectedWidgetType" Parameters="WidgetParameters" />

@code {
    // ...

    // تعریف یک آبجکت برای پارامترها
    private Dictionary<string, object> WidgetParameters { get; set; } = new();

    protected override void OnInitialized()
    {
        // مقداردهی پارامترها
        WidgetParameters = new Dictionary<string, object>
        {
            { "Title", "آمار فروش ماهانه" },
            { "Data", salesDataList }
        };
    }
}

و در کامپوننت مقصد (مثلاً ChartWidget)، باید پارامترها را تعریف کنید:

// ChartWidget.razor
<h3>@Title</h3>
<p>در اینجا نمودار داده‌های @Title نمایش داده می‌شود.</p>

@code {
    [Parameter]
    public string Title { get; set; } = "نمودار پیش‌فرض";

    [Parameter]
    public List<object>? Data { get; set; }
}

 


رامین اسلامی-مدرسه آنلاین دورآموز

رامین اسلامی

مدیر وب سایت دورآموز ، تیم برنامه نویسی جی وب و امور مشترکین مخابرات . برنامه نویس و مدرس زبان های برنامه نویسی و گرافیک سازمان فنی و حرفه ای

به نام خدا

رامین اسلامی هستم ، مدیر وب سایت دورآموز ،مدیر پروژه تیم جی وب ، برنامه نویس هریس کامپیوتر شعبه کانادا و برنامه نویس و مدرس زبان های برنامه نویسی .

من  یک توسعه‌دهنده نرم‌افزار و از علاقمندان فن‌آوری‌های مایکروسافت هستم و دوست دارم روی آنها کار کنم. حوزه اصلی تمرکز من روی C#.Net، Asp.Net، Sqlserver، Entity Framework، MVC، Web API، Jquery و Maui می باشد

  •  ProductRaes@Gmail.com
  •  09155143391

 

بیش از 7 سال سابقه در مدیریت پروژه سیستم طرح جامع امور مشترکین مخابرات استان خراسان رضوی ، 4 سال مدیریت تیم برنامه نویسی شبکه سبز ، 7 سال مدیر وبسایت دورآموز و 20 سال سابقه آموزش در آموزشگاه های مشهد و تهران  را دارا می باشم.

یکی از زیباترین لحظات زندگیم ، آموزش هرآنچه فراگرفته ام و مشاهده پیشرفت شاگردانم می باشد.و باعث سرافراری و خرسندی من می باشد که تعداد زیادی از شاگردان قدیمیم همکاران و رقیبان کاری حال حاضر من می باشند.

سابقه برنامه نویسی من

بیش از 7 سال سابقه در مدیریت پروژه سیستم طرح جامع امور مشترکین مخابرات استان خراسان رضوی شامل بخش های :امورمشترکین , ام دی اف , سالن دستگاه , رئیس مرکز , واگذاری خطوط , آبونمان - مدیر پروژه تیم برنامه نویسی جی وب -  سیستم pap مخابرات -  سیستم اداره ترابری مخابرات -  سیستم حسابداری پویا - ویندوز جادویی پویا - سیستم  سهام شرکت تعاونی آتیه شرق - مدیریت فروش سوپرگوشت  - سایت فروش آسان تست - ۱۰ مجموعه تست و آموزش تصویری آسان تست - خودآزمون  حسابداری  - خودآزمون دیپلم کامپیوتر  -  وبسایت آموزشگاه کامپیوتر پژوهش  - وبسایت آزمون های بین المللی ICDL پاسارگاد  - وب سایت فرش ستاره کویر یزد  -  سیستم حسابداری گل فروشی ایمانا  -  سایت رسمی شرکت پیمانکاری peykavan مالزی  -  انجمن داروخانه های خراسان  - سیستم کنترل تولید شرکت پارس اورتوپد  - فروشگاه اینترنتی قاصتک  - سامانه  فروش بلیط هواپیما مسترتیکو  - پنل مدیریت (CMS) asp.net core  -  باربری حجت بار  و …

سابقه تدریس من

بیش از ۲۰ سال تدرس زبان های برنامه نویسی و گرافیکی و بانک های اطلاعاتی  ,  آموزش کارکنان شرکت گاز مشهد ,  آموزش کارکنان شرکت گاز سرخس ,  آموزش کارکنان اداره مخابرات , آموزش در اموزشگاه های معتبر خراسان رضوی نظیر پاسارگاد ، آراد ، پژوهش ، سنا ، کاسپین و … آموزشگاه رهرو - تهران

فعالیت های من

برگزاری دوره های تخصصی برنامه نویسی در دفتر تیم برنامه نویسی جی وب در شهر مشهد , مشاوره در طراحی بانک های اطلاعاتی , مشاوره و مدیریت پروژه های برنامه نویسی , برنامه نویسی برنامه های کاربردی , برنامه نویسی وب سایت , برنامه نویسی موبایل

 

  • productraes@gmail.com
  • 09155143391
پرسش و پاسخ
نوشته های دیگر این نویسنده

عضوی از دورآموز شو

درخواست مشاوره رایگان می باشد . فقط کافیست شماره همراه خود را ثبت نمایید تا با شما تماس بگیریم

و یا می توانید هم اکنون با شماره 09155143391تماس حاصل نمایید

دورآموزی
شو