我有一个 Blazor 服务器应用程序,我需要在加载文档时运行一个 js 函数 - 当我使用“静态”模式时,jQuery $(document).ready()
工作正常,但我需要使用“ServerPrerendered”模式 - 当用户单击导航栏上的不同链接时,$(document).ready() 永远不会触发,因为 Blazor 使用 SingalR 来更新内容。建议的方法是使用 JSRuntime.InvokeVoidAsync("jsfunctiont")
里面OnAfterRenderAsync
的 defaultLayout.razor
但问题是此事件发生在所有子组件完全呈现之前,因此我的 js 函数将失败。
我的问题是在所有子组件完全渲染后调用js函数的方式是什么?相当于 $(document).ready()
在 Blazor 服务器应用程序中使用“ServerPreRendered”模式?
太感谢了!
最佳答案
OnAfterRender
(使用 firstRender == true)正是您所需要的。直到整个内容在浏览器中呈现后才会触发。
但是,在您的页面创建后,内容将发生变化,因此将创建新组件并销毁现有组件。如果您的 jsfunction
无论何时创建,都需要 Hook 页面上的每个组件,那么您的方法将不起作用。您还需要单个组件来覆盖 OnAfterRenderAsync
并调用 jsfunction
传递对自己的引用。
关于Blazor 服务器应用程序 $(document).ready() 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64003275/