我正在使用Fluxor在我的Blazor应用程序中管理状态,我一直无法找出该过程的选择器部分。
我目前只是将状态注入到我的Razor页面中,并使用State. value . mydata从状态中获取值
这在继承了Fluxor.Blazor.Web.Components.FluxorComponent的Razor组件中工作得很好,但是当从一个不是FluxorComponent的类中获取值时就不起作用了。如果我将state注入到服务类中,则状态不会随着更改而更新。我可以通过创建瞬时服务来解决这个问题,但我觉得我在这里错过了部分难题…
我想我需要使用选择器和选择协议,但我一直无法弄清楚这些部分是如何在实践中实际使用的。是否有一个如何使用选择器语法的例子?
FluxorComponent是一个方便的类,它只是订阅所有实现IState<T>
的属性,并在其中一个触发StateChanged
事件时调用StateHasChanged
。
你可以很容易地自己实现,像这样
@implements IDisposable
@code
{
private IDisposable Subscription;
[Inject] private IState<MyState> MyState { get; set; }
protected override void OnInitialized()
{
base.OnInitialized(); // Does nothing, but good practice
Subscription = StateSubscriber.Subscribe(this, _ => InvokeAsync(StateHasChanged));
}
void IDisposable.Dispose()
{
Subscription.Dispose();
}
}