Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When do I choose React state Vs Redux Store

I've been learning Redux and a part I'm unclear of is, how do I make a determination between using react state vs redux store and then dispatching actions. from my reading so far it looks like I could use React state in place of Redux store and still get things done. I understand the separation of concerns with using Redux store and just having 1 container component and the rest of it as stateless component but how do I make the determination of when to use React state Vs redux store is not very clear to me. Can someone please help?

Thanks!

like image 738
JavaNovice Avatar asked Jan 11 '17 07:01

JavaNovice


People also ask

Should I use React state with Redux?

It is totally fine to use a mix of React component state and Redux state. You might for example use non-critical UI state inside React components, like if a checkbox is checked or not. The official Redux FAQ has a good list of rules of thumb for determining what kind of data should put into Redux.

When would you decide to use Redux in a React app?

Redux is most useful in cases when:You have large amounts of application state that are needed in many places in the app. The app state is updated frequently. The logic to update that state may be complex. The app has a medium or large-sized codebase, and might be worked on by many people.

How do you know when to choose Context API or Redux?

If you're only using Redux to avoid passing down props, you can replace it with Context API. Context is great for sharing trivial pieces of state between components. Redux is much more powerful and provides a set of handy features that Context doesn't have.


Video Answer


2 Answers

If the state doesn't need to be shared with other components, or the state doesn't need to be keep when the component is unmounted, then you can just put it in the component's state.

You can think that the Redux store is the database of front-end, if you have something like product data fetched from an API, then the Redux store is the right place; if you have a dropdown component, which takes a isOpen prop, then the parent of that dropdown can just keep dropdownIsOpen as a component state.

For more information, here is the answer from Dan: https://github.com/reactjs/redux/issues/1287

Also you said

only 1 container component and the rest of it as stateless component

This is incorrect. You can have several container components. A container component can also contain another container component.

like image 83
CodinCat Avatar answered Sep 27 '22 20:09

CodinCat


From book:

First of all, we should always keep in mind that only the minimal amount of data needed should be put into the state. For example, if we have to change a label when a button is clicked we should not store the text of the label, but we should only save a Boolean flag that tells us if the button has been clicked or not. Secondly, we should add to the state only the values that we want to update when an event happens, and for which we want to make the component re-render. Another way to figure out whether the state is the right place to store information is to check if the data we are persisting is needed outside the component itself or by its children. If multiple components need to keep track of the same information, we should consider using a state manager like Redux at the application level.

like image 20
zloctb Avatar answered Sep 27 '22 20:09

zloctb