【问题标题】:Blazor component EventCallback parameter notation [duplicate]Blazor 组件 EventCallback 参数表示法 [重复]
【发布时间】:2021-11-04 04:45:21
【问题描述】:

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

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

【问题讨论】:

  • &lt;MyComponent OnDateChange="MyDateChangedEvent" @ref="MyRef"&gt;&lt;/MyComponent&gt; 这应该足够了。你的第二行是多余的。
  • @ 是 razor 中的开关字符,也是 C# 命名中的文字代码:var @else = 1;。所以 `@ 允许在任何名称前。它仅在用于关键字时有效。
  • @HenkHolterman 这回答了我的问题,你能把它作为一个单独的答案我会接受吗?
  • 好的,但是已经有一个副本。我也会补充的。

标签: .net-core blazor


【解决方案1】:

@ 是较旧的 blazor 表示法。你可以跳过它。但是,如果您尝试传递字符串,则会出现问题。

考虑

<Component label="@labelProvider.Value" />

<Component label="labelProvider.Value" />

后者会从字面上考虑并引起问题。

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

【讨论】:

    【解决方案2】:

    @ 是 razor 中的开关字符,也是 C# 命名中的字面代码:var @else = 1;

    所以@ 允许在任何名称前面。它仅在用于关键字时有效。

    Blazor (razor) 使用它来切换上下文,请参阅this answer

    【讨论】:

      猜你喜欢
      • 2021-02-02
      • 2021-01-26
      • 2020-05-06
      • 2021-07-08
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2021-07-02
      相关资源
      最近更新 更多