BlazorX.NavigationState
2.0.0
Blazorx.NavigationState提供了一组实用程序,使您可以观察并将查询字符串与大型构件结合。
将blazorx.navigationstate包添加到您的大火项目中。
注册Blazorx.NavigationState与您的主机构建器注册:如下:
builder . Services . AddNavigationState ( ) ;将命名空间blazorx.navigationstate添加到_imports.razor。
您可以在NavigationState上使用方法QueryProperty来创建一个将跟踪给定查询字符串参数的对象。使用此对象,您可以像正常值一样绑定到控件。
在下面的示例中,输入中的用户类型将反映在URL中(例如http:// localhost/?name = diego)和vice-versa。
@inject INavigationState NavigationState
< input type = " text " @bind-Value = " Name.Value " />
@code {
IQueryParameter < string > Name ;
protected override void OnInitialized ()
{
Name = NavigationState . QueryProperty ( " name " , " " );
}
}QueryArray类处理的查询字符串可能会在URL中多次出现。处理事情的收集很有用。
@inject INavigationState NavigationState
< ul >
@foreach ( var item in Numbers . Value )
{
< li > @item </ li >
}
</ ul >
@code {
IQueryParameter < int > Numbers ;
protected override void OnInitialized ()
{
Numbers = NavigationState . QueryArray ( " numbers " , new int [ 0 ]);
}
}QueryProperty和QueryArray均通过属性Valuelems支持可观察到的信息:
@inject INavigationState NavigationState
@Sum
< button @onclick = " @(() => Number.Value += 1) " >Increment</ button >
@code {
IQueryParameter < int > Number ;
int Sum ;
protected override void OnInitialized ()
{
Number = NavigationState . QueryProperty ( " n " , 0 );
Number . ValueStream . Subscribe ( x =>
{
Sum += x ;
StateChanged ();
});
}
}