[英]Problem with JavaScript files in Blazor component
我在 Blazor 组件(Blazor 服务器和 .net 6)中使用 JavaScript 文件。 如下:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await jsRuntime.InvokeAsync<IJSObjectReference>("import", "/css/template/vendor/libs/bs-stepper/bs-stepper.js");
}
}
第一次加载页面时一切正常,但是当我使用导航更改页面并进入另一个页面(组件)然后再次返回与上一页相同时,无法使用 JavaScript 代码。
这个问题的原因是什么?
这是在 blazor 应用程序中使用 javascript 库的方法。
在index.html
(或_Layout.cshtml
)的body
元素末尾添加库的脚本
<body>
...
<script src="css/template/vendor/libs/bs-stepper/bs-stepper.js"></script>
...
</body>
和head
元素末端的 css
<head>
...
<link rel="stylesheet" href="css/template/vendor/libs/bs-stepper/bs-stepper.min.css">
...
</head>
在路径wwwroot/js
中创建一个名为stepperInteropHelper.js
的 js 文件,并在其中添加此 function:
export function initStepper() {
new Stepper(document.querySelector('.bs-stepper'));
}
最后在使用步进器的组件中:
@inject IJSRuntime jsRuntime
<div class="bs-stepper">
...
</div>
@code {
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
// import stepperInteropHelper.js module
IJSObjectReference module = await jsRuntime.InvokeAsync<IJSObjectReference>(
"import", "./js/stepperInteropHelper.js");
// call initStepper method from stepperInteropHelper.js
await module.InvokeVoidAsync("initStepper");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.