Blazor:绑定 OnChange 事件 - 可以使用 EventCallback.Factory.CreateBinder?

Blazor: Binding OnChange events - okay to use EventCallback.Factory.CreateBinder?

我是 Blazor 的新手,在设计组件时我 运行 举了一个例子,其中有人使用我不熟悉的绑定方法。

他们使用 EventCallback.Factory.CreateBinder() 而不是 relevant Microsoft documements detailing how to bind data.

中所示的绑定技术

这是他们完成绑定的方式:

@onchange="EventCallback.Factory.CreateBinder<string>(
               this,
               value => CurrentValueAsString = value,
               CurrentValueAsString,
               null)"

但我过去看到的方式涉及一个具有特定名称的方法,如 'ValueChanged' 作为事件回调来处理绑定。 As shown here.

使用 EventCallback.Factory.CreateBinder() 方法而不是 Microsoft 文档中概述的方法有什么缺点吗?

当我用谷歌搜索 CreateBinder() 方法时,我看到它被标记为“仅供内部使用”。这是否意味着我不应该使用它? Shown as "internal use only" here.

@onchange="EventCallback.Factory.CreateBinder<string>(
           this,
           value => CurrentValueAsString = value,
           CurrentValueAsString,
           null)"

这太熟练了...但有时可能比提供方法名称更好。上面@onchange 指令属性的值与编译器在 BuildRenderTree 方法中生成的值非常相似。

But the way that I have seen it in the past involved a method with a specific name like 'ValueChanged' as an event callback to take care of the binding. As shown here.

这里你指的是 parent 和它的 child 之间的组件绑定。但是,上面带有@onchange 指令属性的代码片段与元素data-binding 相关...实际上它们基于相同的原理。 如果将 child 组件绑定到其 parent 的 MyValue 属性,如下所示:

以及 child 组件中的以下内容:

[Parameter]
Public string Value {get;set;}
[Parameter]
Public EventCallback<string> ValueChanged {get;set;}

然后编译器将创建执行绑定的代码 (two-way data-binding)。如果您查看该文件,您会注意到编译器生成的代码与用于元素数据绑定的代码几乎相同。

Are there any downsides to using the EventCallback.Factory.CreateBinder() method instead of the way outlined in the Microsoft documents?

我不这么认为...

When I googled the CreateBinder() method, I saw that it was marked for "internal use only". Does this mean that I'm not supposed to use it?

我们不应该做很多事情...

您应该通过模仿来学习...我在 github 的问题的评论中看到 Blazor 团队的人使用 CreateBinder...不是世界末日。由你决定...