Blazor中如何通过EventCallback实现子组件向父组件传值
Blazor子组件向父组件传值实现
你的子组件Cars的传值逻辑已经符合Blazor的标准实现规范,不需要修改,问题出在父组件的事件处理方法没有定义对应参数接收回传值。
EventCallback<string>类型的回调触发时会携带一个字符串类型的参数,父组件绑定的处理方法只要声明同类型的形参,就能直接拿到子组件传递的车辆ID。
修正后的父组件代码
<Cars CarSelected="@getCarId"></Cars> @* 示例:展示接收到的选中车辆ID *@ @if (!string.IsNullOrEmpty(selectedCarId)) { <p>当前选中车辆ID:@selectedCarId</p> } @code { // 定义字段存储接收到的ID,按需使用 private string selectedCarId; // 添加string类型形参,参数名可自定义,类型必须和EventCallback声明的泛型类型匹配 private void getCarId(string carId) { // 此处carId就是子组件点击条目时传递的car.id selectedCarId = carId; // 后续写拿到ID后的业务逻辑即可,比如查询车辆详情、触发页面跳转等 } }
异步场景适配
如果拿到ID后需要执行异步操作(比如调用接口、IO操作),可以直接把回调方法改成异步写法,传值逻辑不受影响:
@code { private string selectedCarId; private async Task getCarId(string carId) { selectedCarId = carId; // 示例:异步拉取选中车辆的详情数据 // await carService.GetCarDetail(carId); } }
内容的提问来源于stack exchange,提问作者elektra
相关产品推荐
相关产品推荐

