在我的项目中,我有一个Components
文件夹,里面有两个文件:
- Board.razor
- 在这个文件中,我有
<h1>Board component</h1>
- 在这个文件中,我有
- Board.razor.js
- 在这个文件中,我只有一个
console.log('test');
语句
- 在这个文件中,我只有一个
在Index.razor
文件中,我加载自定义组件:
<Board></Board>
当我运行应用程序时,我看到Board
组件加载成功。
据我所知,.js
文件应该由Blazor应用程序自动发现和加载。
因此,我希望在浏览器控制台窗口中也能看到一条console.log
消息。但这并没有发生。我的JS文件似乎没有加载?
根据这个github对话,应该有对它的支持:https://github.com/dotnet/sdk/pull/19270
我有什么东西不见了吗?还是我的期望错了?
其他项目信息
我在.NET 6.0
上运行一个客户端Blazor应用程序,我的应用程序中安装了最新的软件包:
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.7" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.7" PrivateAssets="all" />
虽然它似乎适用于组件级.css文件,但它不适用于.js。您必须显式加载这些文件->https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/?view=aspnetcore-6.0#从外部加载脚本javascript-file-js与组件并置
下面是我最近使用的一个例子。
组件内
-
有几个变量
[Inject] private IJSRuntime JS { get; set; } = default!; private IJSObjectReference? _jsModule;
-
重载OnAfterRenderAsync方法
protected override async Task OnAfterRenderAsync(bool firstRender) { _jsModule ??= await JS.InvokeAsync<IJSObjectReference>( "import", "./Pages/Board.razor.js"); await _jsModule.InvokeVoidAsync("loadBoardJS", parameters); await base.OnAfterRenderAsync(firstRender); }
更新您的Board.rarzor.js文件一点
export function loadBoardJS(parameters) {
...
}