假设我们有一个具有回调函数的组件
[Parameter]
public EventCallback<object> OnDateChange { get; set; }
在父页面中,我们将它绑定到父函数,并为其引用声明变量:
protected async Task MyDateChangedEvent(object obj)
protected MyComponent MyRef{ get; set; }
为什么这两个符号在父组件工作相同,其中一个是正确的?@
符号有区别吗?
<MyComponent OnDateChange="MyDateChangedEvent" @ref="MyRef"></MyComponent>
<MyComponent OnDateChange="@MyDateChangedEvent" @ref="@MyRef"></MyComponent>
@
是razor中的开关字符,也是c#命名中的取字代码:var @else = 1;
。
所以@
可以出现在任何名字的前面。它只对关键字有效。
Blazor (razor)使用它来切换上下文,参见这个答案。
@是较旧的blazor符号。你可以跳过它。但是,如果您尝试传递字符串,则会出现问题。
考虑<Component label="@labelProvider.Value" />
和
<Component label="labelProvider.Value" />
后者将被认为是字面上的,并且会引起问题。
当然,它对事件回调没有影响。但是为了一致性,您可能希望在任何地方都使用它。