سلام. مفهوم و کاربرد Event CallBack در Blazor چیست ؟ لطفا اگر مقدور هست با مثال توضیح بدید.
به طور خیلی خلاصه و ساده می توان گفت عملیاتی که قبلا برای کنترل رویدادها در جاوااسکریپت انجام می شد حالا میتونیم توسط Event CallBack انجام بدیم. مثلا شما قصد دارید اگر روی یک Button کلیک شد پیغامی را نمایش دهید. خب قبلا برای انجام این کار باید از جی کوئری یا جاوااسکریپت استفاده می کردید اما در بلیزر برای انجام این کار از Event CallBack استفاده می شود.
خب برای اینکه مفهوم Event CallBack رو توضیح بدم ابتدا توضیحی باید در مورد Child Component ها بدم. همونطوری که میدونید بلیزر بر اساس کامپوننت ها کار میکنه. یعنی هر بخش از صفحه خودش یک Component هست. حالا کامپوننت ها هم میتونن به صورت Parent-Child باشن. به این معنی که یک کامپوننت ممکنه از یک یا چند کامپوننت کوچکتر تشکیل بشه.
حالا با دونستن نکته بالا بهتر میشه مفهوم Event CallBack در Blazor رو توضیح داد. در ادامه با یک مثال به توضیح این مفهوم می پردازیم.
<div class="panel panel-default">
<div class="panel-heading alert alert-info">@Title</div>
<div class="panel-body alert alert-success">@ChildContent</div>
<button class="btn btn-danger">
Button to be clicked!
</button>
</div>
@code {
[Parameter]
public string Title { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
}
@page "/ParentComponent"
<h1 class="text-danger">Parent child Component</h1>
<EventCallBack.Pages.Components.ChildComponent Title="This is a Text Child Component!">
Content id displayed here
Content id displayed here
</EventCallBack.Pages.Components.ChildComponent>
@code {
}
خب تا اینجا هنوز به مفهوم و کاربرد Event CallBack اشاره نکرده ایم. در تصویر بالا یک دکمه (button) با متن Button to Clicked داریم. فرض کنید می خواهیم وقتی روی این دکمه کلیک کردیم مثلا پیغامی نمایش داده شود. یا مثلا برای رویدادهایی مثل MouseUp و یا MouseDown تابع تعریف کنیم. (مثل نرم افزارهای دسک تاپ!) قبلا این عملیات را توسط جاوااسکریپت انجام می دادیم. مثلا توسط جاوااسکریپت کنترل میکردیم اگر روی Button کلیک صورت گرفت چه تابعی انجام شود. اما در بلیزر این کار خیلی ساده تر شده است. ما میتوانیم توسط Event CallBack رویدادهای یک المنت را کنترل کنیم.
خب برای انجام این کار می توانیم در ChildComponent یک متغیر از نوع EventCallBack تعریف کنیم. همچنین از رویداد onClick هم در تگ Button استفاده میکنیم. به این ترتیب به راحتی مشخص می کنیم وقتی روی دکمه کلیک شد باید عملیاتی انجام شود. بنابراین ChildComponent را به شکل زیر تغییر دهید. (می توانید دستورات زیر را کپی و پیست کنید.)
<div class="panel panel-default">
<div class="panel-heading alert alert-info">@Title</div>
<div class="panel-body alert alert-success">@ChildContent</div>
<button class="btn btn-danger" @onclick="OnClickMethodTest">
Button to be clicked!
</button>
</div>
@code {
[Parameter]
public string Title { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public EventCallback OnClickMethodTest { get; set; }
}
حال در ParentComponent یک پارامتر اضافی به نام OnClickMethodTest داریم که میتوانیم مقدار آن را مشخص کنیم. دستورات زیر را در کامپوننت ParentComponent کپی و پیست کنید.
@page "/ParentComponent"
<h1 class="text-danger">Parent child Component</h1>
<EventCallBack.Pages.Components.ChildComponent OnClickMethodTest="ShowText"
Title="This is a Text Child Component!">
Content id displayed here
Content id displayed here
</EventCallBack.Pages.Components.ChildComponent>
<p><b>@myMessage</b></p>
@code {
private string myMessage;
private void ShowText()
{
myMessage = "This Is Event CallBack Text!";
}
}
در دستورات بالا مشخص شد وقتی روی دکمه کلیک می شود تابعی به نام ShowText صدا زده می شود. و در متغیر myMessage مقداری قرار می گیرد که در خروجی نمایش داده می شود.
تاریخ :
1402/04/28
- ساعت :
09:04:00 PM
- بازدید :
1315
- پاسخ :
0
|
تاریخ :
1403/12/30
- ساعت :
06:43:00 PM
- بازدید :
68
- پاسخ :
1
|
تاریخ :
1403/12/30
- ساعت :
06:52:00 PM
- بازدید :
50
- پاسخ :
1
|
تاریخ :
1403/12/27
- ساعت :
05:26:00 PM
- بازدید :
93
- پاسخ :
1
|
تاریخ :
1403/12/01
- ساعت :
01:07:00 PM
- بازدید :
176
- پاسخ :
0
|
تاریخ :
1403/11/30
- ساعت :
12:08:00 PM
- بازدید :
149
- پاسخ :
1
|
تاریخ :
1399/12/21
- ساعت :
10:20:00 AM
- بازدید :
2769
- پاسخ :
1
|
تاریخ :
1399/12/20
- ساعت :
10:32:00 AM
- بازدید :
2624
- پاسخ :
1
|
تاریخ :
1403/12/24
- ساعت :
06:18:00 PM
- بازدید :
83
- پاسخ :
1
|
تاریخ :
1403/12/26
- ساعت :
03:13:00 PM
- بازدید :
67
- پاسخ :
1
|
تاریخ :
1404/01/07
- ساعت :
05:02:00 AM
- بازدید :
91
- پاسخ :
1
|
تاریخ :
1402/04/28
- ساعت :
09:04:00 PM
- بازدید :
1315
- پاسخ :
0
|
تاریخ :
1403/12/30
- ساعت :
06:43:00 PM
- بازدید :
68
- پاسخ :
1
|
تاریخ :
1398/08/23
- ساعت :
09:16:00 PM
- بازدید :
9853
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
12:18:00 PM
- بازدید :
38
- پاسخ :
1
|
تاریخ :
1404/01/03
- ساعت :
10:39:00 AM
- بازدید :
46
- پاسخ :
1
|
تاریخ :
1404/01/02
- ساعت :
05:05:00 PM
- بازدید :
60
- پاسخ :
1
|
تاریخ :
1403/12/30
- ساعت :
06:52:00 PM
- بازدید :
50
- پاسخ :
1
|
تاریخ :
1399/06/04
- ساعت :
02:25:00 PM
- بازدید :
4421
- پاسخ :
2
|
تاریخ :
1403/11/30
- ساعت :
10:36:00 AM
- بازدید :
203
- پاسخ :
2
|