如何在Fluxor中实现选择器?



我正在使用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();
}
}

最新更新