Viv*_*ndi 3 blazor razor-components blazor-webassembly .net-6.0
在我的项目中,我有一个Components包含两个文件的文件夹:
<h1>Board component</h1>console.log('test');声明在Index.razor文件中我加载自定义组件:
<Board></Board>
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序时,我看到我的Board组件加载成功。
据我了解,该.js文件应该由 Blazor 应用程序自动发现并加载。
所以我的期望是我还应该console.log在浏览器控制台窗口中看到一条消息。但这并没有发生。好像我的JS文件没有加载?
根据这个 github 对话,应该有对此的支持: https ://github.com/dotnet/sdk/pull/19270
我有什么遗漏的吗?还是我的期望是错误的?
我正在 上运行客户端 Blazor 应用程序.NET 6.0,并且我的应用程序中安装了最新的软件包:
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.7" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.7" PrivateAssets="all" />
Run Code Online (Sandbox Code Playgroud)
虽然它似乎适用于组件级 .css 文件,但它不适用于 .js。您必须显式加载这些文件 - > https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/?view=aspnetcore-6.0#load-a-script-from-an-外部 javascript 文件 js 并置与组件
下面是我最近使用的一个例子。
在组件中
有几个变量
[Inject]
private IJSRuntime JS { get; set; } = default!;
private IJSObjectReference? _jsModule;
Run Code Online (Sandbox Code Playgroud)
重载 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);
}
Run Code Online (Sandbox Code Playgroud)
稍微更新一下你的Board.razor.js文件
export function loadBoardJS(parameters) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1345 次 |
| 最近记录: |