.NET 8.0 RC1中OnAfterRenderAsync从未触发问题咨询
.NET 8 RC1 中 OnAfterRenderAsync 未触发的相关变更
- 这属于.NET 8 RC1的已知变更,Blazor组件生命周期的触发逻辑在该版本中做了调整:
- .NET 7 里,组件首次渲染完成后,无论是否涉及异步操作,
OnAfterRenderAsync至少会触发一次; - 但在.NET 8 RC1中,如果组件没有注册任何JS互操作调用(比如未使用
IJSRuntime相关操作),也没有手动调用StateHasChanged触发二次渲染,OnAfterRenderAsync可能不会被触发。
- .NET 7 里,组件首次渲染完成后,无论是否涉及异步操作,
- 临时解决办法:
- 如果组件不需要JS互操作,可以在
OnInitializedAsync或OnParametersSetAsync的末尾手动调用一次StateHasChanged(),强制触发二次渲染,以此让OnAfterRenderAsync执行; - 若组件依赖JS互操作,确认
IJSRuntime的调用逻辑正确,该方法会在JS调用完成后正常触发。
- 如果组件不需要JS互操作,可以在
- 补充:该行为在.NET 8正式版中可能会有修复或调整,建议留意官方后续的更新说明。
内容的提问来源于stack exchange,提问作者ChrisR
相关产品推荐
相关产品推荐

