SelectorsStateStreamExtensions<State> extension

Select a sub state slice from state stream.

Inspirited by NgRx memoized selector

  • Selectors can compute derived data, to store the minimal possible state.
  • Selectors are efficient. A selector is not recomputed unless one of its arguments changes.
  • When using the select, select2 to select9, selectMany functions, keeps track of the latest arguments in which your selector function was invoked. Because selectors are pure functions, the last result can be returned when the arguments match without re-invoking your selector function. This can provide performance benefits, particularly with selectors that perform expensive computation. This practice is known as memoization.
on

Methods

select<Result>(Selector<State, Result> selector, {Equality<Result>? equals}) StateStream<Result>
Observe a value of type Result exposed from a state stream, and listen only partially to changes.
select2<SubState1, SubState2, Result>(Selector<State, SubState1> selector1, Selector<State, SubState2> selector2, Result projector(SubState1 subState1, SubState2 subState2), {Equality<SubState1>? equals1, Equality<SubState2>? equals2, Equality<Result>? equals}) StateStream<Result>
Select two sub states and combine them by projector.
select3<SubState1, SubState2, SubState3, Result>(Selector<State, SubState1> selector1, Selector<State, SubState2> selector2, Selector<State, SubState3> selector3, Result projector(SubState1 subState1, SubState2 subState2, SubState3 subState3), {Equality<SubState1>? equals1, Equality<SubState2>? equals2, Equality<SubState3>? equals3, Equality<Result>? equals}) StateStream<Result>
Select three sub states and combine them by projector.
select4<SubState1, SubState2, SubState3, SubState4, Result>(Selector<State, SubState1> selector1, Selector<State, SubState2> selector2, Selector<State, SubState3> selector3, Selector<State, SubState4> selector4, Result projector(SubState1 subState1, SubState2 subState2, SubState3 subState3, SubState4 subState4), {Equality<SubState1>? equals1, Equality<SubState2>? equals2, Equality<SubState3>? equals3, Equality<SubState4>? equals4, Equality<Result>? equals}) StateStream<Result>
Select four sub states and combine them by projector.
select5<SubState1, SubState2, SubState3, SubState4, SubState5, Result>(Selector<State, SubState1> selector1, Selector<State, SubState2> selector2, Selector<State, SubState3> selector3, Selector<State, SubState4> selector4, Selector<State, SubState5> selector5, Result projector(SubState1 subState1, SubState2 subState2, SubState3 subState3, SubState4 subState4, SubState5 subState5), {Equality<SubState1>? equals1, Equality<SubState2>? equals2, Equality<SubState3>? equals3, Equality<SubState4>? equals4, Equality<SubState5>? equals5, Equality<Result>? equals}) StateStream<Result>
Select five sub states and combine them by projector.
select6<SubState1, SubState2, SubState3, SubState4, SubState5, SubState6, Result>(Selector<State, SubState1> selector1, Selector<State, SubState2> selector2, Selector<State, SubState3> selector3, Selector<State, SubState4> selector4, Selector<State, SubState5> selector5, Selector<State, SubState6> selector6, Result projector(SubState1 subState1, SubState2 subState2, SubState3 subState3, SubState4 subState4, SubState5 subState5, SubState6 subState6), {Equality<SubState1>? equals1, Equality<SubState2>? equals2, Equality<SubState3>? equals3, Equality<SubState4>? equals4, Equality<SubState5>? equals5, Equality<SubState6>? equals6, Equality<Result>? equals}) StateStream<Result>
Select five sub states and combine them by projector.
select7<SubState1, SubState2, SubState3, SubState4, SubState5, SubState6, SubState7, Result>(Selector<State, SubState1> selector1, Selector<State, SubState2> selector2, Selector<State, SubState3> selector3, Selector<State, SubState4> selector4, Selector<State, SubState5> selector5, Selector<State, SubState6> selector6, Selector<State, SubState7> selector7, Result projector(SubState1 subState1, SubState2 subState2, SubState3 subState3, SubState4 subState4, SubState5 subState5, SubState6 subState6, SubState7 subState7), {Equality<SubState1>? equals1, Equality<SubState2>? equals2, Equality<SubState3>? equals3, Equality<SubState4>? equals4, Equality<SubState5>? equals5, Equality<SubState6>? equals6, Equality<SubState7>? equals7, Equality<Result>? equals}) StateStream<Result>
Select seven sub states and combine them by projector.
select8<SubState1, SubState2, SubState3, SubState4, SubState5, SubState6, SubState7, SubState8, Result>(Selector<State, SubState1> selector1, Selector<State, SubState2> selector2, Selector<State, SubState3> selector3, Selector<State, SubState4> selector4, Selector<State, SubState5> selector5, Selector<State, SubState6> selector6, Selector<State, SubState7> selector7, Selector<State, SubState8> selector8, Result projector(SubState1 subState1, SubState2 subState2, SubState3 subState3, SubState4 subState4, SubState5 subState5, SubState6 subState6, SubState7 subState7, SubState8 subState8), {Equality<SubState1>? equals1, Equality<SubState2>? equals2, Equality<SubState3>? equals3, Equality<SubState4>? equals4, Equality<SubState5>? equals5, Equality<SubState6>? equals6, Equality<SubState7>? equals7, Equality<SubState8>? equals8, Equality<Result>? equals}) StateStream<Result>
Select eight sub states and combine them by projector.
select9<SubState1, SubState2, SubState3, SubState4, SubState5, SubState6, SubState7, SubState8, SubState9, Result>(Selector<State, SubState1> selector1, Selector<State, SubState2> selector2, Selector<State, SubState3> selector3, Selector<State, SubState4> selector4, Selector<State, SubState5> selector5, Selector<State, SubState6> selector6, Selector<State, SubState7> selector7, Selector<State, SubState8> selector8, Selector<State, SubState9> selector9, Result projector(SubState1 subState1, SubState2 subState2, SubState3 subState3, SubState4 subState4, SubState5 subState5, SubState6 subState6, SubState7 subState7, SubState8 subState8, SubState9 subState9), {Equality<SubState1>? equals1, Equality<SubState2>? equals2, Equality<SubState3>? equals3, Equality<SubState4>? equals4, Equality<SubState5>? equals5, Equality<SubState6>? equals6, Equality<SubState7>? equals7, Equality<SubState8>? equals8, Equality<SubState9>? equals9, Equality<Result>? equals}) StateStream<Result>
Select nine sub states and combine them by projector.
selectMany<SubState, Result>(List<Selector<State, SubState>> selectors, List<Equality<SubState>?> subStateEquals, Result projector(List<SubState> subStates), {Equality<Result>? equals}) StateStream<Result>
Select many sub states and combine them by projector.