在 Blazor 中,父组件向子组件传递参数时,当这些参数更改时,子组件可以自动重新渲染。但是,如果子组件甚至根本没有呈现,这些参数更改也不会触发新的呈现。这是因为 Blazor 不会在子组件未呈现时保留其渲染状态和参数值。
为了解决这个问题,可以将子组件包装在一个 div 中,并添加一个 @key 属性,将其绑定到组件的参数中。这样,当参数更改时,Blazor 会认为这是一个新的 div,会重新呈现子组件。
下面是一个示例:
在父组件中:
Toggle Child Component
@if(ShowChildComponent)
{
}
@code{
bool ShowChildComponent { get; set; } = false;
int ChildComponentArgument { get; set; } = 1;
void ToggleChildComponent()
{
ShowChildComponent = !ShowChildComponent;
ChildComponentArgument++;
}
}
在子组件中:
Child Component Argument: @Argument
@code{
[Parameter]
public int Argument { get; set; }
}