Mode Reducer

Utilisé lorsque regrouper les règles de changement d'état par action est préférable à l'appel direct du setter.


État du reducer nommé

createRxReducerdispatch une action sans changer directement l'état. Convient aux états avec plusieurs règles de changement comme le panier, todo, état de l'éditeur.

tsx
type TodoAction =
  | { type: "add"; text: string }
  | { type: "toggle"; id: number }
  | { type: "clearDone" };

function todoReducer(state: TodoState, action: TodoAction): TodoState {
  switch (action.type) {
    case "add":
      return {
        items: [...state.items, { id: state.nextId, text: action.text, done: false }],
        nextId: state.nextId + 1,
      };
    case "toggle":
      return {
        ...state,
        items: state.items.map((item) =>
          item.id === action.id ? { ...item, done: !item.done } : item,
        ),
      };
    default:
      return state;
  }
}

const { dispatchTodo, useTodo } = createRxReducer(
  initialTodoState,
  todoReducer,
  "todo",
);

Utiliser l'assistant de tuple reducer pour la clé d'exécution.

Si vous devez séparer le store reducer par clé d'exécution comme l'id de l'espace de travail, l'id de projet. createRxReducerTupleUtilisez.

tsx
export function useWorkspaceFilterState(workspaceId: string) {
  return createRxReducerTuple(
    initialFilterState,
    filterReducer,
    `workspace-filter:${workspaceId}`,
    { storage: "auto" },
  );
}
© 2026 Byeolnaerim. Tous droits réservés.PrésentationPolitique de confidentialité