Blazor 组件参数传递 [Parameter] 属性用法

来源:这里教程网 时间:2026-02-21 17:36:03 作者:

Blazor 中的

[Parameter]
是定义组件可接收外部输入的核心机制,它让组件具备复用性和灵活性。参数必须是 public、可写(即有 set 访问器)的属性,且不能是 static 或 readonly。

基础用法:接收简单类型参数

在子组件中用

[Parameter]
标记属性,父组件通过 HTML 属性语法传值:

支持内置类型如
string
int
bool
DateTime
属性名默认对应标签中的小驼峰命名(如
UserName
user-name
),也可用
[Parameter(Name = "custom-name")]
显式指定
未传值时,引用类型为
null
,值类型为默认值(如
int
是 0)

必需参数与默认值控制

[Parameter(Mandatory = true)]
表示该参数必须由父组件提供,否则运行时报错;若需自定义默认行为,可在
SetParametersAsync
OnInitialized
中补全:

Mandatory = true
仅在编译期不检查,错误发生在组件渲染时
不加
Mandatory
时,建议在
OnInitialized
中判断是否为默认值并做兜底处理
避免在
get
中直接返回默认值(如
=> _value ?? "default"
),因为无法触发重渲染

接收组件内容(RenderFragment)和事件回调

[Parameter]
还能接收 UI 片段或委托,实现高级封装:

[Parameter] public RenderFragment ChildContent { get; set; }
用于接收
<child><p>Hello</p></child>
中的内容
[Parameter] public EventCallback<string> OnClick { get; set; }</string>
接收回调方法,触发用
await OnClick.InvokeAsync("data")
多个
RenderFragment
参数可配合命名模板使用(如
HeaderTemplate
FooterTemplate

参数变更响应与生命周期配合

参数更新会触发组件重新渲染,但若需在参数变化时执行逻辑,应重写

SetParametersAsync
或监听
OnParametersSet

OnParametersSet
在每次参数更新后、首次渲染及后续重渲染前调用
若需异步加载数据,应在
OnParametersSetAsync
中处理,并调用
StateHasChanged()
(必要时)
避免在
SetParametersAsync
中直接修改
Parameters
,应先调用
base.SetParametersAsync(parameters)

基本上就这些。掌握

[Parameter]
的边界和配合时机,就能写出清晰、健壮、易维护的 Blazor 组件。

相关推荐