DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Truong Hoang Dung
Truong Hoang Dung

Posted on

Why i won't use React Hooks

I'm passionate about ReactJS, because of its declarative programming model.

That means, in React,

view = function(state)

That's why i never mess React Component with side-effects, like ajax request or state.

With separate function for behaviour, you can easily reuse, unit test, and package it.

With React Hooks, what i have to do is to mess side-effects within the component.

It's not good to me.
It's not simple to debug.
It's not simple to reuse the behaviour.
It's not easy to unit test the behaviour.

That's why i would say NO to React hooks, because i prefer simplicity to magic.
I'm a simple developer, not a magician trying to understand wtf is going on with my production code.

Top comments (16)

Collapse
 
jaffparker profile image
Jaff Parker

I can understand your concerns. Though at the same time, hooks are just an upgrade for the lifecycle functions of class components or the HOC's, but they make it simpler, so if you used those, there's no reason you shouldn't use hooks. I find that hooks look clearer than HOC's or lifecycle functions (HOC's would just always confuse me when I have to compose them, especially when I'd try to create props typings).

I get though that you want to keep your components as much functional as possible. Personally, I started separating my components into containers and views. Views have nothing async, zero side effects, just props => ReactElement. All the data loading and state management and side effects happen in containers. Even when I switch to hooks, it will stay that way.

Collapse
 
ghost profile image
Ghost • Edited on

I didn't get familiar with hooks, but it seems React team is sometimes pushing it too far, the need to innovate, and the question remains, whether there was really a need for it, or not.

Collapse
 
revskill10 profile image
Truong Hoang Dung

Agree. I found no need for React Hooks.

Collapse
 
tdtrung17693 profile image
Tran Dinh Trung

Couldn't agree more. Sometimes, I wonder if they just add the hooks just for the sake of making it different and stand out from other libraries out there.

Collapse
 
abhijitparida profile image
Abhijit Parida

That's why i never mess React Component with side-effects, like ajax request or state.

How do you do it then?

Collapse
 
revskill10 profile image
Truong Hoang Dung

You can use a HOC (Higher order component) to reuse behaviour, or using Render Props pattern.

Collapse
 
abhijitparida profile image
Abhijit Parida

Like redux?

Thread Thread
 
revskill10 profile image
Truong Hoang Dung

No need for redux.
You can read more about HOC and render props in ReactJS guide.

Thread Thread
 
abhijitparida profile image
Abhijit Parida

Alright. Thank you!

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
revskill10 profile image
Truong Hoang Dung

Yeah, i was wrong at the time of the post. I comeback and retry and i was hooked :P

Collapse
 
douglaslondrina profile image
Douglas Schmidt

Your article is well ranked on "react hooks community reaction" (yes, I did search for that before joining the band wagon). So, I think you could update this article with your newer finding about react hooks.
BR.

Collapse
 
jaffparker profile image
Jaff Parker

I guess that's okay, it's exactly why the React team isn't making classes and HOC's go away :) Personally, I feel that hooks are more in the "spirit of React", but at the same time, the spirit of React is to have more than 1 way to do things, so this is just some healthy variety

Collapse
 
jay97 profile image
Jamal Al

Totally agree with. I also posted a question against it.

Collapse
 
louiszen profile image
Louiszen

I think you will be happy using react hook only if you are working as a team of only one person. I have seen too many hook lovers without a good fundamental skill of programming, just like making a one-page website, err.... I meant all JS code in one page, one single file.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.

11 Tips That Make You a Better Typescript Programmer

1 Think in {Set}

Type is an everyday concept to programmers, but it’s surprisingly difficult to define it succinctly. I find it helpful to use Set as a conceptual model instead.

#2 Understand declared type and narrowed type

One extremely powerful typescript feature is automatic type narrowing based on control flow. This means a variable has two types associated with it at any specific point of code location: a declaration type and a narrowed type.

#3 Use discriminated union instead of optional fields

...

Read the whole post now!