blazor - Blazor 服务器应用 $(document).ready() 等效项
问题描述
我有一个 Blazor Server 应用程序,我需要在加载文档时运行 js 函数 - 当我使用“静态”模式时,jQuery$(document).ready()
工作正常,但我需要使用“ServerPrerendered”模式 - 当用户单击导航栏上的不同链接时, $(document).ready() 永远不会触发,因为 Blazor 使用 SingalR 更新内容。建议的方法是使用JSRuntime.InvokeVoidAsync("jsfunctiont")
inside
OnAfterRenderAsync
,defaultLayout.razor
但问题是此事件发生在所有子组件完全呈现之前,因此我的 js 函数将失败。我的问题是在所有子组件完全渲染后调用js函数的方式是什么?这相当于$(document).ready()
在 Blazor 服务器应用程序中使用“ServerPreRendered”模式?
太感谢了!
解决方案
OnAfterRender
(firstRender == true)是你需要的。直到在浏览器中呈现整个内容之后才会触发。
但是,在您的页面创建后,内容会发生变化,因此将创建新组件并销毁现有组件。如果您jsfunction
需要挂钩页面上的每个组件,而不管它是何时创建的,那么您的方法将行不通。您需要各个组件也覆盖OnAfterRenderAsync
并调用jsfunction
传递对它们自己的引用。
推荐阅读
- jenkins - Jenkins 文件在参数类型之间进行选择
- jbpm - 实时 JBPM 部署
- android - 有没有办法知道使用 GridCells.Adaptive 单元格时我们有多少列?
- javascript - 逐行节点JS提示输入不起作用
- java - 在 WebSphere Application Server 上部署时,OperatingSystemMXBean 不是有效的 MXBean 接口错误
- flutter - 从孩子身上移除着色器
- javascript - 如何使十六进制颜色具有相同的色调但更亮?
- c++ - 构建一个依赖于 grpc 的 Yocto bitbake 配方,grpc-native 失败,说 grpc_cpp_plugin 不存在
- sql-server - GETDATE() 作为 SQL 过程中的默认值参数
- javascript - 如何使用console.log()在javascript中打印星形图案?