React.useCallback reference
In a nutshell
useCallback returns a memoized callback that only changes if one of the given dependencies has changed.
When you declare a function within your React component like this:
const UserDetails = ({ user }) => {
const getUsername = () => {
return user.name
}
return (
<Username getUsername={getUsername} />>
)
}
React will re-create the getUsername function every time UserDetails is rendered. This means that the Username component will always re-render when UserDetails is re-rendered because the getUsername prop that it receives will be a different function (React components re-render when their props change).
You can get a performance boost and avoid unnecessary re-rendering of Username by wrapping the getUsername function in useCallback:
const UserDetails = ({ user }) => {
const getUsername = useCallback(() => {
return user.username
}, [user])
return (
<Username getUsername={getUsername} />>
)
}
Now, getUsername will be a memoized callback that will only be recreated between re-renders of UserDetails if the user dependency changes.
Sources
Thanks for your comment 🙏. Once it's approved, it will appear here.
Leave a comment