Custom hook example has missing dependency

Open Beginner friendly
#3,937 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
1/5
Estimated time
Under an hour
Newbie friendliness
70/100
Issue type
Documentation
Clarity
Clearly specified
Activity status
Stale
Tech stack
javascript, react
Domain
documentation

Research direction

Open content/docs/hooks-custom.md and inspect the useFriendStatus() example around line 91. Update the example's dependency list as described, then verify the documentation renders correctly and that the example shows the intended dependency.

Written by the indexing model from the issue text.

Description

Regarding 'Building Your Own Hook' page (github link).

Small but critical mistake in custom hook example for function useFriendStatus(). It needs a dependency. I.E.
Change line 91 by inserting , [friendID].

Without the dependency this appears to be 'magic'. I found I had to add a dependency when writing my learning hook, otherwise my counter just spins indefinitely.


Example
Custom hook:

function useCounter(targetId: string) {
    const [counter, setCounter] = useState(0);
    
    useEffect(() => {
        setCounter(counter+1);
    }, [targetId]);
    
    return counter;
}

Client code:

interface MainProps {
    counterTargetId: string;
}

export default function MainPage(props: MainProps = {
    counterTargetId: 'a',
}) {

    const currentCount = useCounter(props.counterTargetId);
    
    return (<div>
        <p>
            Count: {currentCount}
        </p>
    </div>);
}
function App() {
    const [targetId, setTargetId] = useState('a');
  return (
    <div className="App">
        <input
            type="button"
            value="Toggle"
            onClick={() => setTargetId(targetId === 'a' ? 'b' : 'a')}/>

        <MainPage counterTargetId={targetId}/>
    </div>
  )
}
Dominant language
JavaScript
Stars
11.8k
Forks
7.9k
Avg merge
16h 6m
Merged PRs (30d)
7

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from reactjs/react.dev

All issues in reactjs/react.dev

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.