跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何在 Blazor 中复用同一组件并独立管理多个实例的状态

本文讲解如何在 Blazor 中正确复用自定义组件(如 TextArea),通过 @bind 双向绑定机制实现多个实例间状态隔离,并在父组件中分别获取各自独立的输入值。 本文讲解如何在 blazor 中正确复用自定义组件(如 textarea),通过 `@bind` 双向绑定机制实现多个实例间状态隔离,并在父组件中分别获取各自独立的输入值。 在 Blazor 开发中,经常需要在同一页面多次使用相同的功能性组件(例如多个富文本编辑区、输入框或表单字段)。但若直接重复渲染未设计为可绑定的组件(如原始示例中无参数交互的 @code { [Parameter] public required string Value { get; set; } [Parameter] public required EventCallback ValueChanged { get; set; } private string result = ""; protected override void OnInitialized() { // 初始化时同步外部传入的 Value 到内部 result,确保首次渲染显示正确值 result = Value; } private async Task FinishAsync() { // 触发回调,将当前 result 值通知父组件 await ValueChanged.InvokeAsync(result); } // 当内部 result 变化时(如用户输入),也应同步更新绑定值(可选,但推荐) private async Task OnResultChanged(string newValue) { result = newValue; await ValueChanged.InvokeAsync(result); } }
✅ 关键改进说明 : 使用 [Parameter] public required string Value 和 EventCallback ValueChanged 构成标准绑定契约; OnInitialized() 中初始化 result,避免首次渲染丢失初始值; id 属性添加唯一标识(如 @Guid.NewGuid()),防止多个