Redux

Redux is a predictable state container designed to help you write JavaScript apps that behave consistently across client, server, and native environments, and are easy to test. While it's mostly used as a state management tool with React, you can use it with any other JavaScript framework or library.

There are 3 main concepts of Redux

Redux can be described in three fundamental principles:

1. Single source of truth​ The global state of your application is stored in an object tree within a single store.

2. State is read-only​ The only way to change the state is to emit an action, an object describing what happened.

3. Changes are made with pure functions