events - Blazor:绑定 OnChange 事件 - 可以使用 EventCallback.Factory.CreateBinder 吗?
问题描述
我是 Blazor 的新手,在设计组件时,我遇到了一个使用我不熟悉的绑定方法的示例。
他们使用 EventCallback.Factory.CreateBinder() 而不是相关 Microsoft 文档中详细说明如何绑定数据的绑定技术。
这是他们完成绑定的方式:
@onchange="EventCallback.Factory.CreateBinder<string>(
this,
value => CurrentValueAsString = value,
CurrentValueAsString,
null)"
但是我过去看到的方式涉及一个具有特定名称的方法,如“ValueChanged”作为事件回调来处理绑定。如此处所示。
使用 EventCallback.Factory.CreateBinder() 方法而不是 Microsoft 文档中概述的方法有什么缺点吗?
当我搜索 CreateBinder() 方法时,我看到它被标记为“仅供内部使用”。这是否意味着我不应该使用它?此处显示为“仅供内部使用”。
解决方案
@onchange="EventCallback.Factory.CreateBinder<string>(
this,
value => CurrentValueAsString = value,
CurrentValueAsString,
null)"
这太熟练了......但有时可能比提供方法名称更好。上面的@onchange 指令属性的值与编译器在 BuildRenderTree 方法中生成的值非常相似。
但是我过去看到的方式涉及一个具有特定名称的方法,如“ValueChanged”作为事件回调来处理绑定。如此处所示。
在这里,您指的是父级与其子级之间的组件绑定。但是,上面带有@onchange 指令属性的代码片段与元素数据绑定有关...实际上它们基于相同的原理。如果将子组件绑定到其父组件的 MyValue 属性,如下所示:
<子@bind-Value="MyValue"/>
子组件中的以下内容:
[Parameter]
Public string Value {get;set;}
[Parameter]
Public EventCallback<string> ValueChanged {get;set;}
然后编译器将创建执行绑定的代码(双向数据绑定)。如果您查看该文件,您会注意到编译器生成的代码与用于元素数据绑定的代码几乎相同。
使用 EventCallback.Factory.CreateBinder() 方法而不是 Microsoft 文档中概述的方法有什么缺点吗?
我不这么认为...
当我搜索 CreateBinder() 方法时,我看到它被标记为“仅供内部使用”。这是否意味着我不应该使用它?
我们不应该做很多事情...
你应该通过模仿来学习……我已经看到 Blazor 团队的人在他们对 github 问题的评论中使用 CreateBinder……而不是世界末日。由你决定...
推荐阅读
- docker - 通过 Apache Airflow 在 Python 子进程中运行 docker 命令的权限问题
- debugging - 默认 ASP.NET Core MVC 项目不会运行
- ruby-on-rails - 无法从 ckeditor gem 访问嵌套参数
- django - 如何使用 django 检查表中是否已存在数据
- r - 当 trimws 不起作用时如何修剪空白?
- javascript - 如何将 Angular 属性添加到以函数为参数的动态生成的元素?
- javascript - 从各个模块获取单独的导出
- vb.net - 如何将 MouseHover 和 MouseLeave 应用于两个控件以充当一个控件?
- php - 列出的项目未对齐并连续跳过 2 个项目空间
- react-native - 带有“./environment/validate.fx”的 Jest 中出现意外的字符串错误;