DEV Community

Cover image for React Hooks Mini Crash Course
Chris Achard
Chris Achard

Posted on • Originally published at twitter.com

React Hooks Mini Crash Course

This was originally posted as a Twitter thread: https://twitter.com/chrisachard/status/1167132279333957632

Want to learn hooks, but you've been too busy? ⏲

🔥 Here's a mini crash course just for you! 🔥

(code links at the end)

1.

Add state to function components by calling useState and pass in the initial value.

useState in function components

2.

useState returns 2 values in an array:

  1. the current value of the state
  2. a function to update the state

useState

3.

Call hooks at the top level of a function, and NOT in if statements or loops.

This is required for React to internally keep track of the hook values.

call hooks at the top level

4.

Perform asynchronous actions and actions with side effects in the useEffect hook

That way, async actions still work across multiple renders

useEffect

5.

useEffect takes an array of dependencies as the second argument

THIS IS IMPORTANT! Skipping the dependency list can result in infinite loops, or code that doesn't run when you think it should

useEffect dependencies

6.

Write custom hooks as function that start with the word use

Then use any built in hooks you want

and return (or not) and values and functions

Custom Hooks

7.

There are many other built in hooks, but they all follow similar patterns

Get the complete list here: https://reactjs.org/docs/hooks-reference.html

8.

That's it! You can now add state and long-running effects to function components.

Class components aren't dead, but hooks do help clean up some component logic.

9.

Here are links to code you can try out!

useState

useEffect

Custom Hooks

 

Like this post?
You can find more by:

Thanks for reading!

Top comments (10)

Collapse
 
itsmenatalie profile image
Natalia

This is what I needed this whole time! Easy, clean and descriptive! Thank you mate! 😍

Collapse
 
chrisachard profile image
Chris Achard

You're welcome!

Collapse
 
simbo1905 profile image
Simon Massey • Edited

Do react hooks make it easier to use the mvvm design pattern?

Collapse
 
chrisachard profile image
Chris Achard

Not necessarily easier - hooks are mostly a way to provide functionality to function components (instead of class components), and then they let you re-order and organize how to handle things like effects. So it's not like they allow you to do anything new necessarily - but they just let you organize and respond to your data and effects in a new way.

Collapse
 
landerson352 profile image
Lincoln Anderson

This article may be helpful: medium.com/@thomasburlesonIA/https...

Ignoring the bits about RXJS specifically, the "facade" approach of putting all your "view-model" logic into a custom hook and then pulling the VM hook into the components you need, is pretty great. Previously this would be done with the container/pure-component model and/or higher-order-components (HoCs), which have their own pitfalls and boilerplate to deal with.

So while hooks don't give you any groundbreaking new MVVM architecture out of the box, I do think they make it easier and cleaner to implement.

Collapse
 
chrisachard profile image
Chris Achard

Thanks for the link! I'll check it out

Collapse
 
lmolivera profile image
Lucas Olivera

I've been trying to understand Hooks for a while and this post basically explained me how to use them. Thank you very much, it is a very well written article!

Collapse
 
chrisachard profile image
Chris Achard

Thanks! I really like the format as well: Hopefully I'll do more! I like the "mini crash course" idea, plus it fits well for both twitter and for here.

Glad it was helpful!

Collapse
 
s_aitchison profile image
Suzanne Aitchison

Thanks for this - it's the perfect overview I needed!

Collapse
 
chrisachard profile image
Chris Achard

Glad it helped!