我有3个组成部分。我要从组件B调用组件C的New()
方法。
可以使用以下代码(我得到了Console.Writeline)。但是用户界面没有更新。我试图在StateHaseChanged()
方法中设置New()
,但这给了我以下错误。非常感谢!
错误
WASM:System.InvalidOperationException:渲染句柄尚未出现 分配。
ComponentA(侧边栏项)
<NavLink href="@href">
<div @onclick="OnClick.InvokeAsync">@Text</div>
</NavLink>
@code {
[Parameter] public string Text { get; set; }
[Parameter] public EventCallback OnClick { get; set; }
}
ComponentB(SideBar)
<ComponentA Text="Something" Onclick="@(() => componentC.New())" />
@code {
ComponentC componentC = new ComponentC();
}
ComponentC(页面)
@code {
public void New()
{
//Dostuff..
Console.WriteLine("Testing");
//StateHasChanged();
}
}
答案 0 :(得分:1)
尝试如下使用ComponentC
中的ComponentB
:
<ComponentA Text="Something" Onclick="@(() => componentC.New())" />
<ComponentC @ref="componentC" />
@code {
private ComponentC componentC;
}
ComponentBase
类实现了IComponent.Attach(RenderHandle)
方法,当您仅在代码中简单地更新组件时就不会调用该方法。但是,当您在标记中执行此操作时,一切都正确连接了。