gpt4 book ai didi

当其他组件调用方法时,Blazor 组件不更新 UI

转载 作者:行者123 更新时间:2023-12-04 04:15:00 25 4
gpt4 key购买 nike

我有 3 个组件。当我想要的是从组件 B 调用组件 C 的 New() 方法。这适用于以下代码(我得到了 Console.Writeline)。但是用户界面没有更新。我试图在 New() 方法中设置 StateHaseChanged(),但这给了我以下错误。非常感谢!

错误

WASM: System.InvalidOperationException: The render handle is not yet assigned.

ComponentA(侧边栏项目)

<NavLink href="@href">
<div @onclick="OnClick.InvokeAsync">@Text</div>
</NavLink>


@code {
[Parameter] public string Text { get; set; }
[Parameter] public EventCallback OnClick { get; set; }
}

组件B(侧边栏)

<ComponentA Text="Something" Onclick="@(() => componentC.New())" />


@code {
ComponentC componentC = new ComponentC();
}

ComponentC(页面)

@code {
public void New()
{
//Dostuff..
Console.WriteLine("Testing");
//StateHasChanged();

}
}

最佳答案

尝试在ComponentB中使用ComponentC,如下:

<ComponentA Text="Something" Onclick="@(() => componentC.New())" />
<ComponentC @ref="componentC" />

@code {
private ComponentC componentC;
}

ComponentBase 类实现了 IComponent.Attach(RenderHandle) 方法,当您在代码中简单地新建组件时不会调用该方法。但是,当您在标记中执行此操作时,一切都会正确连接。

关于当其他组件调用方法时,Blazor 组件不更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60894661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com