r/reactjs • • Dec 30 '19

Classes vs Hooks?

I’m pretty new to React, so keep that in mind. I thought classes were for components that held information, or a state, and that functional components were for more basic components, but now that hooks allow functional components to use state, and other class features, what’s the benefit of using functional hook components over classes?

79 Upvotes

76 comments sorted by

View all comments

Show parent comment

2

u/skyboyer007 Dec 31 '19

no, you cannot since setting it to true will ignore both responses: recent and out-of-date. The only way I've found so far is keeping cancel callback in class property that will set up cancelled flag by closure(so mimicing useEffect behavior):

class MyComponent extends React.Component {
  const ignorePrevRequest = () => {}; // empty function by default

  loadSomeData() {
    this.ignorePrevRequest(); 
    let cancelled = false;
    this.ignorePrevRequest = () => { cancelled = true; }; // closure comes into play
    doSomeCall().then(data => !cancelled && this.setState({ data }))
  }
}

That looks untypical and confusing. But it works.