Blazor 中的元素引用为 null

vag*_*lis 3 .net ref blazor

我有以下 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 中变量的值?

Hen*_*man 8

@ref在渲染期间设置的。OnInitialized 在第一次渲染之前执行。

因此,执行此操作的合理位置是在 OnAfterRender 中。使用firstRender 只执行一次。

protected override async Task OnAfterRenderAsync(bool firstRender)
{
  if (firstRender)
  {
    await updateView();
  }
}
Run Code Online (Sandbox Code Playgroud)