我是blazor(dotnet 8)的新手,对组件渲染流程的工作方式感到困惑。
数据布局:
@if (currentSeason!=null && currentSeason.ActiveCategory.IsActive)
{
<CascadingValue Value="@currentSeason">
<TTSWeb.Blazor.Components.Pages.Data.TeamsOnTop @rendermode="InteractiveServer" />
@Body
</CascadingValue>
}
@code {
[CascadingParameter]
RouteData RouteData { get; set; }
public string? Slug { get; set; }
public CurrentSeasonModel currentSeason { get; set; } = new();
protected override async Task OnInitializedAsync()
{
if (RouteData.RouteValues.TryGetValue("Slug", out var slug) == true)
{
var results = await ttsClient.LatestSeasonsByCategory.ExecuteAsync(slug!.ToString());
if (results.IsSuccessResult())
{
// load data to currentSeason
}
}
}
}
字符串
在TeamsOnTop组件上:
@if (currentSeason != null && currentSeason.ActiveCategory.IsActive)
{
<p>load teams</p>
}
else
{
<p>no data</p>
}
@code {
[CascadingParameter]
public CurrentSeasonModel currentSeason { get; set; } = default!;
}
型
应用程序先点击load teams,然后点击no data。所以我想知道它怎么可能用一个null currentSeason渲染TeamsOnTop?
1条答案
按热度按时间jpfvwuh41#
创建组件时,设置
currentSession
:字符串
我敢打赌:
型
执行
currentSeason
的双循环加载,结果是null
或currentSeason.ActiveCategory.IsActive
是false
。当操作是bool c并yields时,组件在bool测试变为false之前呈现和bool(并可能呈现)任何子组件。然后组件第二次呈现,条件为false,没有设置rendered。
我不知道你为什么要有条件地渲染
@body
,但你可能有自己的理由。您正在检查null,因此使用
nullables
,而不检查布局。型
然后
型