Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React hooks: are they useful for shared state management, like e.g. Redux?

There is a hype about React hooks. Too much information and I still don't know: does the advent of hooks mean that libs like Redux can be thrown to garbage?

So far, what I understood is hooks are good for stateful functional components, what about shared state?

like image 504
Nurbol Alpysbayev Avatar asked Nov 08 '18 00:11

Nurbol Alpysbayev


People also ask

Can I use React hooks instead of Redux?

One of the biggest problems was “prop drilling”, which was common with nested components. The solution was to use a state management library like Redux. This, unfortunately, came with the expense of writing boilerplate code. But now it's possible to replace Redux with React Hooks and the Context API.

Is React hooks state management?

In React development, keeping track of how your application data changes over time is called state management. By managing the state of your application, you will be able to make dynamic apps that respond to user input.

Which hook is helpful in managing state in React apps?

The React Hooks API has introduced a whole new way of writing and thinking about React apps. One of my favorite React Hooks is useReducer , which you can use to share states between components. In this tutorial, we'll show you how to handle complex state updates in React using the useReducer Hook.

What is the best state management in React?

Which state management is best in React? React's useState is the best option for local state management. If you need a global state solution, the most popular ones are Redux, MobX, and built-in Context API.


3 Answers

No, hooks don't totally eliminate the need for Redux. Hooks are mainly as an alternative to implement features that we have to use classes for today:

  1. Local component state
  2. Context
  3. Lifecycle methods and side effects

Other than the above, hooks also provide an easier way to share stateful logic between components.

What is more likely to kill/replace Redux is context instead of hooks, which is a way to share state across components. But IMO context isn't as powerful as Redux stores as there are other features that Redux offers besides a shared state store such as middlewares and a specialized devtool with time-travelling capabilites. There's also a whole learning and tooling ecosystem built around Redux that context doesn't have at the moment as far as I know.

If you use the useReducer hook in conjunction with context like in this example, it'd be very similar to using Redux and for small apps (like a TodoMVC), it might be sufficient. For large apps I don't think just one context and useReducer will be sufficient. You might need multiple of them, and that's where using Redux and composing stores would make sense. You could also combine multiple contexts and useReducer hooks but it might be cleaner to just use Redux.

like image 117
Yangshun Tay Avatar answered Oct 10 '22 21:10

Yangshun Tay


No, Hooks won't replace Redux, but they can help you write cleaner code, and you won't need to write class components just to use local state or lifecycle methods. That is a great use case right there.

In the past you had to use Redux to make sure a state is persistent between each re-render of the component. But now you can just use useState() method to implement a persistent local state! You can use useEffect() instead of React lifecycle methods, and you can use useReducer to write quick action creator methods and access a global state!!

Here is a good article about how to use useReducer() method.

like image 31
xeiton Avatar answered Oct 10 '22 21:10

xeiton


Yes but it looks like its still not an official feature. It's still in feature proposal. stage. Many people thought react context would dump redux into the garbage but it turns out it didn't.

like image 33
maxadorable Avatar answered Oct 10 '22 21:10

maxadorable