DEV Community

Cover image for Custom react hooks vs services
Stephen Chiang
Stephen Chiang

Posted on

Custom react hooks vs services

I'm having a tough time explaining the difference between a custom react hook and a service.

It's easy to see the utility of the built in ones, but what about custom hooks?

with a regular service, I can :

  • import it to any component, provide it's functions and or state.
  • call or make use of react hooks.

When would you write a custom hook and when would you opt for a service?

What can you do with a custom hook that you can't do with a service?

Top comments (8)

Collapse
 
sergiodxa profile image
Sergio Daniel Xalambrí

A service could be used wherever you want, a custom hook only inside a React component, you could use your service inside a custom hook or an async action creator (for Redux) or any other place you want.

Collapse
 
chiangs profile image
Stephen Chiang

Then what is the advantage of a custom hook over a service?

Collapse
 
sergiodxa profile image
Sergio Daniel Xalambrí

Inside a custom hook you can access to React context or define an state, things you can't inside a service outside the React application.

Thread Thread
 
chiangs profile image
Stephen Chiang

You can if it's a service inside the react application...

Thread Thread
 
dan_abramov profile image
Dan Abramov

Hooks define state per call. This is very different. You can pass values between them and they execute while rendering.

Maybe this article helps? medium.com/@dan_abramov/making-sen...

Thread Thread
 
chiangs profile image
Stephen Chiang • Edited

Ah, so whereas services can be used as singletons, hooks are not because state is isolated...

However, if I don't need to define a state it can either be used as a hook or as a service?

Thanks for the article...and all that you do for react in general, cheers 🍻

Thread Thread
 
taewa profile image
Taehwa Kim

I have the exactly the same question.
How are you using hooks and services now?

Collapse
 
scriptkavi profile image
ScriptKavi

Why create one when you can get all awesome hooks in a single library?

Try scriptkavi/hooks. Copy paste style and easy to integrate with its own CLI