簡體   English   中英

Blazor 級聯參數始終落后 1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM