You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor同级组件能否直接访问彼此数据?方案选择分享

Blazor组件间数据传递问题

我把Razor页面拆分成了这样:

@page "/Manager/ListCampaigns"

<OrganizationFilter SearchAsync="@SearchCampaigns"></OrganizationFilter>

<OrganizationGrid ListOrganizations="@MatchingCampaigns"></OrganizationGrid>

我的疑问是:OrganizationFilter组件持有OrganizationGrid.ListOrganizations需要的数据,能不能直接写成下面这样实现等效效果?

<OrganizationGrid ListOrganizations="@OrganizationFilter.MatchingCampaigns"></OrganizationGrid>

还是必须通过bind-MatchingCampaigns先把数据传递给父组件,再由父组件传给OrganizationGrid?


更新

我收到了@MrCakaShaunCurtis和@BrianParker的优质解答,作为Blazor新手,我认可他们的专业深度,但最终选择了第三种方案。三种可行方案如下:

  • [CascadingParameter]方案:父组件声明级联参数,所有子组件都能访问。当OrganizationFilter修改参数后,OrganizationGrid会感知到变化并重新渲染,方案简洁易用。
  • 作用域服务方案:通过DI注入一个包含DataChanged事件处理程序的对象,OrganizationFilter调用委托后,OrganizationGrid接收消息触发更新。基于消息传递,但实现相对复杂。
  • 父组件事件链式传递方案:父组件公开DataChanged()事件,OrganizationFilter调用该事件后,父组件触发OrganizationGrid的对应方法完成更新,实现链式消息传递,逻辑简洁清晰。

选择第三种方案的原因:方案2在当前场景下过于复杂;方案1是Blazor的核心功能,但相关概念对我来说还比较陌生。不过我计划在1.1版本改用[CascadingParameter]方案,以此掌握这个基础用法。

感谢@MrCakaShaunCurtis和@BrianParker,他们不仅提供了解决方案,更让我对Blazor有了更深入的理解。

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:35:09