[英]Blazor Cascading Parameter always 1 behind
我對我在這里做錯了什么感到困惑。 在我的布局文件中,我有一個標題部分,該部分應根據我當前所在的頁面進行更改。 這是布局頁面。
<CascadingValue Value="this">
<div class="min-h-full">
<NavMenu/>
<header class="bg-white shadow-sm">
<div class="max-w-7xl mx-auto py-4 px-4 sm:px-6 lg:px-8">
<h1 class="text-lg leading-6 font-semibold text-gray-900">@PageTitle</h1>
</div>
</header>
<main>
<div class="max-w-7xl mx-auto py-6 sm:px-6 lg:px-8">
<div class="px-4 py-4 sm:px-0">
@Body
</div>
</div>
</main>
</div>
</CascadingValue>
<Footer></Footer>
@PageTitle 是我用來控制標題文本的變量。
背后的代碼聲明它是這樣的。
public string PageTitle { get; set; }
現在在我的視圖頁面上,我在后面的代碼中執行此操作。
[CascadingParameter]
public MainLayout? Layout { get; set; }
protected override void OnInitialized()
{
Layout.PageTitle = "Current Page Header";
}
問題是它沒有正確更新,我去的第一頁是空白的,然后當我點擊另一個頁面時,它會在頁眉部分落后一頁。 我的猜測是我現在對狀態感到困惑,或者我這樣做完全錯誤。
非常感謝任何幫助。
您需要將字符串值傳遞給 MainLayout,然后調用 StateHasChanged 方法重新渲染它。
@code {
private string _pageTitle ;
public string PageTitle
{
get => _pageTitle;
set
{
if (_pageTitle != value)
{
_pageTitle = value;
}
InvokeAsync(() => StateHasChanged());
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.