我有一个HTML Admin template
,需要移植Blazor
。
所有CSS
都工作正常,我现在唯一的问题是管理模板使用jQuery
进行了大量CSS操作和漂亮的样式设计。
起初我不想使用jQuery,因为当您认为使用Blazor就像试图摆脱Javascript一样,但是因为在此管理模板中,有一些不错的左菜单动画以及对悬浮CSS样式的控制以及许多其他功能我猜最简单的方法是添加jQuery
。
模板使用app.js
文件开头,
$(window).on('load', function () {
.....
}
在装入事件中设置了许多内容。
我读到,为了使用Blazor来jQuery
用户,您需要让Blazor控制DOM,所以我的jquery app.js文件中不会有onReady
或Load
事件。我需要从Blazor调用一个Initializer方法,该方法将充当Load事件。
我的问题是:
在Blazor中必须使用哪种生命周期方法来运行它?由于Blazor是 SPA ,因此该组件的初始设置仅会调用一次,或者在刷新页面时调用,因此我应该使用OnInitialized
或OnAfterRenderAsync(bool firstRender)
。
将运行此初始设置的Blazor生命周期方法必须在主路由路径@page "/"
上运行?
在Blazor中使用jQuery违反了其概念设计,或者使用它没有问题或不良模式吗?我不会使用任何Ajax东西,等等,基本上基本上就是DOM操作,而使用jQuery很容易。
答案 0 :(得分:0)
您应该使用OnAfterRenderAsync(bool firstRender)方法初始化JavaScript对象,并且只能初始化一次;也就是说,您的代码应包装在if语句中,如下所示:
if( firstRender )
{
// Initialization code comes here...
}
将运行此初始设置的Blazor生命周期方法必须在主路由路径@page“ /”上运行?
不一定...它应该在要使用它的组件页面的路由路径上运行。
在Blazor中使用jQuery违反其概念设计,或者使用它没有问题或不良模式吗?
在Blazor中寻找最佳做法的过程正在进行中。就个人而言,我反对在Blazor中使用jQuery,而是使用JSInterop将jQuery小部件转换为Blazor组件。但这只是我。其他人则另想,或者至少会别做。
但是,对于您而言,最好的办法是检查给定的jQuery代码是否与Blazor渲染系统无缝兼容。也许如果仅仅是“菜单动画和悬停CSS样式的控制”,那么实际上不会引起任何问题。但是你永远不会知道。因此,如上所述,您应该这样做,并测试它是否可以正常工作。