Blazor EventCallbacks 命名约定 - 双向绑定

问题描述 投票:0回答:1

我们目前正在为 Blazor 应用程序定义一些命名约定。一个有趣的点是 EventCallbacks 和处理程序的命名。

互联网上关于此主题的信息不多,但常见网站(如 https://blazor-university.com/components/component-events/)、Microsoft 示例以及 ChatGPT 表明在 EventCallbacks 前面加上“On”前缀,例如:

[Parameter]
public EventCallback<CultureInfo> OnCultureChanged { get; set; }

这看起来不错,也与其他 SPA 相匹配(就像这里的讨论 事件处理程序的正确名称是什么? onClick 还是 handleClick?),但奇怪的是现在我们不能再使用双向绑定了; Blazor 具有要求 EventCallback 的约定。像这样:

<TestComponent @bind-SelectedKartenMode:get="SelectedKartenMode"
                      @bind-SelectedKartenMode:set="SetSelectedKartenModeAsync">
</TestComponent>

约定规定,子组件需要完全像这样的命名:

        [Parameter]
        public KartenMode? SelectedKartenMode { get; set; }

        [Parameter]
        public EventCallback<KartenMode> SelectedKartenModeChanged { get; set; }

微软还明确指出,使用事件回调进行双向绑定是错误的,因此我们要么不能使用 On 前缀,要么需要一些尴尬的解决方法。

两边都有似乎很奇怪:微软本身使用了 On 前缀,但在约定中却没有尊重它。我们在这里做错了什么,还是有比允许这两种约定更好的解决方法?

blazor blazor-server-side
1个回答
0
投票

如果您使用

bind-SelectedKartenMode
,则回调必须是某个名称。如果您使用
bind-SelectedKartenMode:get
bind-SelectedKartenMode:set
,那么您可以随意命名。

© www.soinside.com 2019 - 2024. All rights reserved.