scope<LocalState, LocalAction> method

Store<LocalState, LocalAction> scope<LocalState, LocalAction>({
  1. required LocalState toLocalState(
    1. S globalState
    ),
  2. required A toGlobalAction(
    1. LocalAction localAction
    ),
})

Creates a scoped child store that projects a subset of state and actions.

The child store:

  • Derives its state from the parent via toLocalState.
  • Forwards actions to the parent via toGlobalAction.
  • Does not run its own reducer; all state changes flow through the parent.
final counterStore = appStore.scope(
  toLocalState: (app) => app.counter,
  toGlobalAction: (action) => AppAction.counter(action),
);

Implementation

Store<LocalState, LocalAction> scope<LocalState, LocalAction>({
  required LocalState Function(S globalState) toLocalState,
  required A Function(LocalAction localAction) toGlobalAction,
}) {
  return Store._(
    subject: _subject.derive(toLocalState),
    reducer: (state, action) => (state: state, effect: Effect.none()),
    send: (localAction) => send(toGlobalAction(localAction)),
  );
}