我有以下 html 剃刀代码
<StEyth @ref="stEyth"></StEyth>
<Gr1D @ref="gr1D" ></Gr1D>
Run Code Online (Sandbox Code Playgroud)
@code 中的以下代码
@code {
private Gr1D? gr1D;
private StEyth? stEyth;
protected override async Task OnInitializedAsync()
{
await updateView();
}
private async Task updateView()
{
DrpdVal = new IpDrpdValues { ar1 = gr1D.ar1}
await stEyth.updateView(DrpdVal);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当代码到达时 gr1D 为空
DrpdVal = new IpDrpdValues { ar1 = gr1D.ar1}
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?我如何获取 Gr1D 中变量的值?
是@ref在渲染期间设置的。OnInitialized 在第一次渲染之前执行。
因此,执行此操作的合理位置是在 OnAfterRender 中。使用firstRender 只执行一次。
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await updateView();
}
}
Run Code Online (Sandbox Code Playgroud)