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

如何在Blazor子组件中访问父组件注入的HttpClient服务

如何从继承父组件的子组件访问父组件注入的服务?

你的子组件已经通过@inherits ParentComponent继承了父组件,而Blazor中通过@inject指令注入的对象,编译后会生成protected级别的属性,因此子组件可以直接访问父组件中注入的Http对象,无需额外操作。

子组件使用示例

修改ChildComponent.razor代码如下:

@inherits ParentComponent
<h1>Child</h1>
@code{
    protected override async Task OnInitializedAsync()
    {
        // 直接使用继承自父组件的Http对象
        var result = await Http.GetFromJsonAsync<string>("api/example");
        // 父组件中添加的"test"请求头会自动生效
    }
}

注意事项

  • 父组件中对Http对象的修改(比如添加请求头)会被子组件继承,因为HttpClient默认是Scoped生命周期(Blazor Server中每个用户会话一个实例,Blazor WebAssembly中全局单例),父子组件共享同一个实例。
  • 不要在子组件中再次使用@inject HttpClient Http,否则虽然能拿到同一个实例,但完全没必要,直接使用继承的属性更简洁。
  • 确保父组件没有将Http属性手动改为private,否则子组件无法访问(@inject默认生成的是protected属性,无需手动修改)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:31:18