Ramboe UserFeedback-一台用于在异步方法调用过程中显示旋转器,错误和成功消息的大风库。该框架简化了异步UI更新的处理,使开发人员可以专注于其核心逻辑并提供无缝的用户体验。
凭借其易于使用的API,该库使显示旋转器,错误消息和成功消息的成功消息变得易于使用。在不牺牲简单性或性能的情况下为您的用户提供所需的反馈。
dotnet add package Ramboe.Blazor.UserFeedback --version 1.0.0
基本功能是在执行功能时显示旋转器
并显示可能发生的任何例外(UI仍然响应迅速)
您也可以在旋转器下方显示加载消息
并选择显示成功消息(例如,成功的HTTP帖子)
首先使您的组件从trywrapper继承
然后将反馈物包裹在您想隐藏的HTML标记周围,而Spinner处于活动状态时
组件的代码应该看起来像这样
@inherits Ramboe.Blazor.UserFeedback.ComponentBaseExtensions.TryWrapper
< FeedbackArea Target =" DefaultTarget " >
< table class =" table " >
< thead >
< tr >
< th > Date </ th >
< th > Temp. (C) </ th >
< th > Temp. (F) </ th >
< th > Summary </ th >
</ tr >
</ thead >
< tbody >
@foreach (var forecast in forecasts)
{
< tr >
< td > @forecast.Date.ToShortDateString() </ td >
< td > @forecast.TemperatureC </ td >
< td > @forecast.TemperatureF </ td >
< td > @forecast.Summary </ td >
</ tr >
}
</ tbody >
</ table >
</ FeedbackArea >如果您需要自定义应用程序中某个区域的旋转器,则反馈需要几个参数
为了确定在执行内容时要旋转哪个区域,我们需要将一个反馈图附加到它上,该反馈负责保留反馈区域(Spinner Active,Success Message,显示的成功消息等。)
由于我们从trywrapper继承,因此我们始终获得至少一个可以使用的目标
如果您需要更多目标,只需将它们添加到您的组件中(不要忘记使用“ new()”初始化)
反馈区域需要在启动时进行配置。您可以使用AddStandArdFeedBackareas()方法
应用以下配置
spinnersizemode = spinnersizemode。 VH5 ,
colormode = colormode。基本的,
SpinNertype = SpinNertype。 Borderspinner
如果您想配置自己的样式
withColor()还具有与Colormode枚举一起使用的超负荷
可以配置以下属性:大小,颜色,类型
尺寸:通过Spinnersizemode Enum配置,范围为VH2 -VH90
颜色:通过SpinnerColormode Enum配置,该枚举表示Bootstrap随附的颜色类别(主要,次要,成功,...)
类型:通过Spinnertypemode Enum配置,当前Contais Spinner-Border和Spinner Grow
直接传递到反馈的任何参数都将覆盖program.cs中完成的任何配置。例如,在反馈#2上设置“主要”颜色模式...
导致将反馈的旋转器颜色设置为“主要”,而反馈#1仅采用启动配置:
它的工作方式与EventCallbacks相同。如果您想在执行某种方法时旋转旋转,则需要2个步骤:
async Task < List < WeatherForecast > > LoadData ( )
{
// simulate waiting for an api, so we can actually see the spinner spinning
await Task . Delay ( 2000 ) ;
return await ForecastService . GetForecastAsync ( DateOnly . FromDateTime ( DateTime . Now ) ) ;
} protected override async Task OnInitializedAsync ( )
{
forecasts = await TryAsync ( LoadData , DefaultTarget ) ;
forecasts = await TryAsync ( LoadData , DefaultTarget , "loading with loading message but without success message" ) ;
forecasts = await TryAsync ( LoadData , DefaultTarget , "loading with success message" , "updating data successful" ) ;
}您也可以使用一种明确的方法之一
protected override async Task OnInitializedAsync ( )
{
// those to methods do the same thing
forecasts = await TryAsync ( LoadData , DefaultTarget , "loading with success message" , "updating data successful" ) ;
forecasts = await TryWithLoadingAndSuccessMessageAsync ( LoadData , DefaultTarget , "loading with success message, explicit" , "updating data successful" )
}由于它的工作方式与EventCallbacks相同,因此您已经知道您需要使用参数的方法的lambda表达式:
protected override async Task OnInitializedAsync ( )
{
await LambdaExample ( ) ;
}
async Task LambdaExample ( )
{
await Task . Delay ( 2000 ) ;
forecasts = await TryAsync (
( ) => ForecastService . GetForecastAsync ( DateOnly . FromDateTime ( DateTime . Now ) ) ,
DefaultTarget ,
"loading, lambda" ,
"lambda successfull"
) ;
} 在启动上配置反馈:
builder . Services . AddAndConfigureFeedbackAreas ( )
. WithSize ( SpinnerSizeMode . Vh5 )
. WithType ( SpinnerTypeMode . BorderSpinner )
. WithColor ( SpinnerColorMode . Secondary )
. ConfigureFeedbackAreas ( ) ;从trywrapper继承并围绕您的内容包裹反馈(包括目标)
@inherits Ramboe.Blazor.UserFeedback.ComponentBaseExtensions.TryWrapper
< FeedbackArea Target =" DefaultTarget " >
@*Content here*@
</ FeedbackArea >您可以使用各种超载。
forecasts = await TryAsync ( LoadData , DefaultTarget ) ;
forecasts = await TryAsync ( LoadData , DefaultTarget , "loading with loading message but without success message" ) ;
forecasts = await TryAsync ( LoadData , DefaultTarget , "loading with success message" , "updating data successful" ) ;...或显式
protected override async Task OnInitializedAsync ( )
{
forecasts = await TryWithLoadingAndSuccessMessageAsync ( LoadData , DefaultTarget , "loading with success message, explicit" , "updating data successful" )
}当使用参数时,方法(就像EventCallbacks一样)时,方法将传递到反馈中,这意味着需要lambda表达式。