Blazor Fluxor提供了一种很好的方式来预先加载应用程序状态,这可以在应用程序启动时提高性能和用户体验。可以在程序启动时使用Blazor Fluxor的InitializeAsync()
方法来预加载状态。
在以下示例中,MyStateFeature
是一个简单的状态功能,它包含MyState
类。MyState
类包含一个字符串属性,它存储文本值。以下代码显示如何在程序启动时使用Blazor Fluxor初始化状态:
using Fluxor;
public class Program
{
static async Task Main(string[] args)
{
var baseUrl = GetBaseUrl();
var httpClient = new HttpClient() { BaseAddress = new Uri(baseUrl) };
var serviceProvider = new BrowserServiceProvider(services =>
{
services.AddHttpClient();
services.AddScoped(sp => httpClient);
services.AddFluxor(opts => opts.ScanAssemblies(typeof(Program).Assembly));
});
var store = serviceProvider.GetService();
// Call InitializeAsync to preload state before app start.
await ((IStateFacade)store).InitializeAsync();
var hostBuilder = WebAssemblyHostBuilder.CreateDefault(args);
hostBuilder.RootComponents.Add("#app");
// Register the Fluxor store with the WebAssembly host builder.
hostBuilder.Services.AddSingleton(store);
await hostBuilder.Build().RunAsync();
}
}
在上述代码中,InitializeAsync()
方法在调用Build()
方法之前被调用,以确保状态已预先加载。
这个方法可以在更复杂的应用程序中使用,包括多个状态功能。它们可以在AddFluxor()
方法中注册。例如:
services.AddFluxor(opts =>
{
opts.ScanAssemblies(typeof(Program).Assembly);
opts.UseReduxDevTools();
opts.AddMiddleware();
});