0

0

Blazor 父子组件数据传递和事件回调方法

幻夢星雲

幻夢星雲

发布时间:2026-01-14 05:19:19

|

771人浏览过

|

来源于php中文网

原创

父子组件通信核心为三机制:①[Parameter]单向传值;②@bind+EventCallback实现双向绑定;③EventCallback通知父组件;参数变更需在OnParametersSetAsync中响应,跨层级用CascadingParameter。

blazor 父子组件数据传递和事件回调方法

父子组件数据传递:使用 [Parameter] 和 @bind

父组件向子组件传值,最常用的是 [Parameter] 特性。子组件定义一个 public 属性并标记为 [Parameter],父组件在引用子组件时通过属性名绑定值即可。

例如子组件 Child.razor 中:

[Parameter] public string Title { get; set; } = "默认标题";
[Parameter] public int Count { get; set; }

父组件中调用:

若需双向绑定(比如子组件修改后同步回父组件),可用 @bind 语法。此时子组件需同时提供参数和对应的 Changed 事件回调(类型为 EventCallback)。

  • 子组件声明:
    [Parameter] public string Value { get; set; }
    [Parameter] public EventCallback ValueChanged { get; set; }
  • 在子组件内触发更新:
    await ValueChanged.InvokeAsync(newValue);
  • 父组件使用:
    (Blazor 自动解析为 Value + ValueChanged 绑定)

子组件向父组件通信:通过 EventCallback 回调

子组件不能直接修改父组件状态,但可通过 EventCallback 主动“通知”父组件发生了什么。这是 Blazor 推荐的解耦方式。

Figma Slides
Figma Slides

Figma Slides 是 Figma 发布的PPT制作和演示文稿生成工具,可以帮助创建、设计、定制和分享演示文稿

下载

典型场景:子组件有个按钮,点击后希望父组件刷新列表或显示提示。

  • 子组件定义回调参数:
    [Parameter] public EventCallback OnClick { get; set; }
    // 或带参:
    [Parameter] public EventCallback OnItemSelect { get; set; }
  • 在子组件事件中触发:
    await OnClick.InvokeAsync();
    // 或带参调用:
    await OnItemSelect.InvokeAsync("item1");
  • 父组件接收并处理:


    并在 @code 块中定义对应方法。

避免常见陷阱:参数更新与生命周期配合

Parameter 属性变更不会自动触发组件重绘逻辑,除非你显式响应。Blazor 在参数更新后会调用 OnParametersSet(或异步版 OnParametersSetAsync),这是执行副作用(如重新加载数据)的合适时机。

  • 不要在 Set 访问器里做异步操作(C# 不支持 async setter)
  • 需要根据参数变化发起 HTTP 请求?放在 OnParametersSetAsync
  • 注意:首次渲染和每次参数变更都会触发该方法,必要时加条件判断(如对比新旧值)

进阶技巧:使用 CascadingParameter 实现跨层级传递

当多个嵌套层级(如父→子→孙)都需要访问同一数据或服务时,重复通过 [Parameter] 逐层透传很繁琐。这时可结合 CascadingParameterCascadingValue

  • 父组件包裹内容区域:


  • 子/孙组件声明接收:
    [CascadingParameter] public string ThemeColor { get; set; }
  • 适合传递主题、用户上下文、全局配置等不频繁变更的数据

基本上就这些。核心就三点:Parameter 传入、EventCallback 传出、CascadingParameter 跨层共享——不复杂但容易忽略生命周期钩子的使用时机。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.11.20

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

537

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

52

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

194

2025.08.29

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

331

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

404

2023.11.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号