ifLet<ChildState, ChildAction, ChildEnvironment> method

Reducer<State, Action, Environment> ifLet<ChildState, ChildAction, ChildEnvironment>({
  1. required Lens<State, ChildState?> stateLens,
  2. required ActionLens<Action, ChildAction> actionLens,
  3. ChildEnvironment toLocalEnvironment(
    1. Environment
    )?,
  4. required Reducer<ChildState, ChildAction, ChildEnvironment> child,
})

Composes this reducer with a child reducer that operates on optional state.

When the state projected through stateLens is non-null, the child reducer runs. When it is null, the child reducer is skipped. This combines both reducers, with this reducer running first.

Implementation

Reducer<State, Action, Environment> ifLet<ChildState, ChildAction, ChildEnvironment>({
  required Lens<State, ChildState?> stateLens,
  required ActionLens<Action, ChildAction> actionLens,
  ChildEnvironment Function(Environment)? toLocalEnvironment,
  required Reducer<ChildState, ChildAction, ChildEnvironment> child,
}) {
  return Reducer.combine([
    this,
    child.nullable().pullback(
          stateLens: stateLens,
          actionLens: actionLens,
          toLocalEnvironment: toLocalEnvironment ?? ((p0) => p0 as ChildEnvironment),
        ),
  ]);
}