我有一个简单的 Blazor 组件,它是已绑定到属性的文本框:
<input @bind="TheValue" />
@code {
public string TheValue { get; set; } = "abc";
public void FillTextBox(string s)
{
TheValue = s;
Console.WriteLine("TheValue is = " + TheValue);
}
}
在我使用该组件的主页中,我有以下代码:
<MyTextbox @ref="myTextbox" /></MyTextbox>
<button @onclick="@(()=>myTextbox.FillTextBox("123"))">Fill</button>
@code {
MyTextbox myTextbox;
}
当组件渲染时,它的默认值是“abc”,如果我在组件内部调用
FillTextBox
,它也可以正常工作,但是当我单击按钮时,尽管 FillTextBox
将被执行(并显示中的值)控制台)它不会更改输入元素的值。
所以总结一下,当我调用更改绑定变量的方法时,@bind
不起作用。
更新:我正在寻求数据绑定或将值传递给子组件,我正在寻找调用先前创建的子组件方法,而不必担心组件是否会正确呈现自身。
我认为当你的组件像这样使用时,该组件不会重新渲染。也许添加一个带有
StateHasChanged
的方法并调用此方法可以完成这项工作?