使用方法更改参数时 Blazor 组件不渲染

问题描述 投票:0回答:1

我有一个渲染模式为

InteractiveServer
的 .NET 8 blazor 应用程序。

在应用程序中,有一个带有

IsShown
参数的组件,
if
语句使用该参数来呈现内容。如果我从主页更新参数,一切都会按预期进行。直接使用组件的引用更新属性没有任何效果。添加
StateHasChanged()
没有效果。

这是主页。第一个按钮有效。第二个和第三个没有。

<p><button @onclick="ShowUsingParameter">Show using parameter</button></p>
<p><button @onclick="ShowUsingProperty">Show using property</button></p>
<p><button @onclick="ShowUsingMethod">Show using method</button></p>

<ExampleComponent IsShown="isComponentShown" @ref="exampleComponent"></ExampleComponent>

@code {
    private bool isComponentShown;
    private ExampleComponent exampleComponent;

    void ShowUsingParameter()
    {
        isComponentShown = true;
    }

    void ShowUsingProperty()
    {
        exampleComponent.IsShown = true;
        StateHasChanged();
    }

    void ShowUsingMethod()
    {
        exampleComponent.Show();
    }
}

这是组件:

@if (IsShown)
{
    <h3>ExampleComponent</h3>
    
    <button @onclick="() => IsShown = false">Hide</button>
}

@code {
    [Parameter] public bool IsShown { get; set; }

    public void Show()
    {
        IsShown = true;
    }
}
blazor blazor-server-side
1个回答
0
投票

你必须在组件内部调用StateHasChanged:

public void Show()
{
    IsShown = true;
    StateHasChanged();
}
© www.soinside.com 2019 - 2024. All rights reserved.