c# - @bind 和 @bind-value 之间的区别
问题描述
@bind
使用和有什么区别@bind-value
?
我做了这个简单的例子,并在浏览器中测试它,我没有看到任何区别。
<p>@@bind @increment1</p>
<input
type="text"
@bind="@increment1"
/>
<p>@@bind-value @increment2</p>
<input
type="text"
@bind-value="@increment2"
/>
@code {
string increment1;
string increment2;
}
解决方案
精简版
@bind
是@bind-value
事件设置为“onchange”的覆盖。
这两个命令是等价的:
... @bind-value="userName" @bind-value:event="onchange" ...
... @bind="userName" ...
长版
该@bind
属性完成两个独立(但相关)的任务:
- 将表达式绑定到
<Input...
组件的值 - 绑定将触发组件
ValueChanged
属性的委托
表达式和委托都是必需的。一个实现@bind-Value
看起来像这样:
... @bind-value="userName" @bind-value:event="onchange" ...
我们正在设置表达式 ( )和="userName"
委托 ( ="onchange"
)。
“更简单”@bind=
只是将委托预设为“onchange”的覆盖。所以这两个命令在功能上是一样的:
... @bind-value="userName" @bind-value:event="onchange" ...
... @bind="userName" ...
使用重写方法的一个大大简化的类比:
public void bind-value(string value, string event)
{..}
public void bind(string value)
{
bind-value(value, "onchange");
}
使用完整@bind-value
版的几个常见用例是
- 在用户键入时更新 UI
- 在用户键入时验证电子邮件地址
请记住,该onchange
事件只会PropertyChanged
在组件失去焦点时触发。相反,我们希望PropertyChanged
被oninput
事件触发:
... @bind-value="H1Content" @bind-value:event="oninput" ...
... @bind-value="email" @bind-value:event="oninput" ...
推荐阅读
- java - 如何在android studio java中将对象从片段发送到活动?
- java - javax.servlet.ServletException: Servlet [api] 的 Servlet.init() 抛出异常 - Tomcat 错误
- git - `exec git clone` 在 tclsh 中被中断
- python - 在不同的图像中寻找相似的对象
- flutter - 当我调用设置状态时,其他字段更新为空白,有没有一种方法可以使 TextFormFields 在我调用设置状态时不会变为空白
- r - 使用 ggplot 更明显地绘制多个组的 ecdf
- mysql - Sequelize top level where with Op.or 给出错误
- java - 用于写入密集型应用程序的 Java 并发集合 - 只需少量读取
- javascript - 添加文档后,如何在 React Native 中保存 Firestore 响应(可能未处理的承诺拒绝(id:1):TypeError:“res”是只读的)?
- swift - 如何使这些安全规则对 Firestore 满意