Blazor组件EventCallback参数符号



假设我们有一个具有回调函数的组件

[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" />

后者将被认为是字面上的,并且会引起问题。

当然,它对事件回调没有影响。但是为了一致性,您可能希望在任何地方都使用它。

相关内容

  • 没有找到相关文章

最新更新