这是否等同于事件如闪电般散发出来? : https://angular.io/api/core/EventEmitter(以角度表示) https://vuejs.org/v2/guide/components-custom-events.html(正在调查中)
使用新的blazor语法@组件<>中的事件名称(3.0预览版6)
答案 0 :(得分:1)
这项工作:
Index.razor
<SurveyPrompt Title="How is Blazor working for you?" Counter="@Counter" CounterChanged="@CounterChangedFiredEvent" />
<p>Counter: @Counter</p>
@code {
private int Counter = 1;
void CounterChangedFiredEvent(int counter)
{
Counter = counter;
StateHasChanged();
}
}
SuveyPrompt.razor
<input type="button" value="Previuos" @onclick="@Previous" />
<input type="button" value="Next" @onclick="@Next" />
@code {
// Demonstrates how a parent component can supply parameters
[Parameter] string Title { get; set; }
[Parameter]
private int Counter { get; set; }
[Parameter]
Action<int> CounterChanged { get; set; }
void Next()
{
CounterChanged(++Counter);
}
void Previous()
{
CounterChanged(--Counter);
}
}
答案 1 :(得分:0)
是的,是...
在Blazor中,事件是通过委托来定义和触发的,尤其是具有单个参数,两个,三个... 16参数,Action<T>
,{{1 }}等,最重要的是新结构EventCallback,Func<T>
等。所有这些委托都封装了具有给定参数数量的方法。
在Angular中,您可以使用类似这样的方法来回调方法:
Func<T, TResult>
在Blazor中,您可以使用类似的方法来调用封装在委托中的方法。
假设您在子组件中定义了一个参数属性,以封装从父组件作为组件参数传递的方法(如果您希望调用在父组件上定义的方法,并为其传递值,则可能是一个要求,例如int类型。parameter属性可以这样定义:
EventCallback<T>
这是将委托分配给父组件中的parameter属性的方法
this.valueChange.emit(this.counter);
在子组件中,您应从此定义一个名为CallParentMethod的方法,该方法将由此调用封装在委托属性中的方法:
protected EventCallback<int> ValueChange {get; set;}
如您所见,InvokeAsync与Angular中的EventEmitter差不多。
请注意,我可以使用lambada表达式直接调用父方法。
希望这对您有帮助...