Blazor WebAssembly应用程序在执行导致Null的Initialy的方法后加载配置值,然后它将返回正确的值。
设置文件:
var contentSize = 0;
for(var i = 0; contentSize < document.querySelector('ul').scrollLeft; i++)
{
contentSize += document.querySelector('ul li')[i].getBoundingClientRect().width + 6;
}
我的Component.razor:
wwwroot/appsettings.json
我的Program.cs文件:
@page "/"
<h1>Configuration example</h1>
<p>Message: @Configuration["message"]</p>
@code {
protected override async Task OnParametersSetAsync()
{
await trying to read Configuration["Message"];
}
}
我的_Imports.razor
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
}
}
注意:理解我正确获取了值,但始终始终为null,然后使用正确的值重新渲染,我使用OnParametersSetAsync()作为入口点,我理解OnParametersSetAsync()在每次参数更改时都会发生变化。但是配置值应该是常量而不是null首先是
答案 0 :(得分:0)
今天,当我尝试从appsettings.json获取连接字符串值时,我遇到了同样的问题。尝试重新启动Visual Studio ,它将正常运行。
答案 1 :(得分:0)
该组件在加载数据之前和之后实例化两次。根据设计,这可以更快地显示页面,然后再加载数据。
Why does Blazor renders component twice
Why are Blazor lifecycle methods getting executed twice?
答案 2 :(得分:0)
在将blanu nuget软件包从3.2.0升级到3.2.1之后起作用了