Eu tenho este componente pai:
<CascadingValue Value="@Email" IsFixed="true">
<Header />
<div class="container-fluid">
@Body
</div>
</CascadingValue>
@code {
[Parameter]
public string Email { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (!firstRender)
return;
Email = await GetEmailFromLocalStorage();
}
}
E o componente de cabeçalho (simplificado) é:
<Details></Details>
E o componente de detalhes (neto do pai):
@code {
[CascadingParameter]
public string Email { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (!firstRender)
return;
var email = Email; //Testing
}
}
Em tempo de execução, o componente pai começa a renderizar, mas então o neto começa a renderizar e o parâmetro 'Email' é nulo.
Por que isso acontece e a prática acima não é uma prática recomendada para passar parâmetros para componentes filhos?