问题描述
在Blazor中,使用EventCallback可以在子组件中发生某些更改时在父组件中运行一个函数。在下面的示例中,子组件正在等待按钮单击,然后单击父组件将运行所需的功能(未显示父组件)。
如果段落中发生某些更改,是否可以通过父组件类似地运行该功能?
<p>Current count: @currentCount</p>
<button @onclick="OnChangeEvent" class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
[Parameter] public EventCallback OnChangeEvent { get; set; }
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
解决方法
<button @onclick="OnChangeEvent" class="btn btn-primary" @onclick="IncrementCount">Click me</button>
此代码将永远无法使用。您不能两次使用@onclick指令。您可以改为执行以下操作:
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
private void IncrementCount()
{
currentCount++;
OnChangeEvent.InvokeAsync();
}
如果段落中发生某些更改,是否可以通过父组件类似地运行该功能?
什么是段落?您是说<p>
元素吗?
如果是,那么您还意味着当currentCount更改时从父组件运行函数,对吗?在这种情况下,我上面的示例确实做了...增加currentCount然后调用该函数。您也可以将一个值传递给该函数。