Skip to content
This repository was archived by the owner on Apr 3, 2024. It is now read-only.
This repository was archived by the owner on Apr 3, 2024. It is now read-only.

Non-memoized / ref'd reducer runs into double dispatch issue when used in custom hook #18

@chrisdhanaraj

Description

@chrisdhanaraj

Hello! First off, love this library so much, it's made my code so much more clean.

Simplified reproduction: https://codesandbox.io/s/red-https-bxpo0?file=/src/App.tsx

But anyways, I've run into this scenario recently and was able to resolve by resolving this locally - but, to be honest, I'm not really sure of the React internals enough to PR this + test. Anyways, the scenario

  1. I want to use useEffectReducer in my own hook and export out it's dispatch so that other components can programmatically send out events to the reducer.
  2. However, when I leverage the dispatch it emits events twice.
  3. To resolve, you can useMemo the wrappedReducer .
const memoReducer = useMemo(() => wrappedReducer, []);

const [[state, effectStateEntityTuples, entitiesToStop], dispatch] = useReducer(
    memoReducer,
    initialStateAndEffects
 );

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions