---
title: 3 Fundamental Principles of Redux
description: Redux is a library for managing states that follow the principles of the flux architecture & is an independent framework, but for the sake of brevity, we'll assume that we are using it with React.
---

Visit our partner [Nestria](https://nestria.org?utm_source=byteacademy&utm_medium=menu-referral)

[![byte_academy_logo](https://www.byteacademy.co/hs-fs/hubfs/BYTE%20logo%20files/byte_academy_logo.png?width=2550&height=3300&name=byte_academy_logo.png) ![byte_academy_logo](https://www.byteacademy.co/hs-fs/hubfs/BYTE%20logo%20files/byte_academy_logo.png?width=2550&height=3300&name=byte_academy_logo.png)](https://www.byteacademy.co)

- Programs 
    - [Python Bootcamp](https://www.byteacademy.co/courses/python-bootcamp)
    - [Data Science Bootcamp](https://www.byteacademy.co/courses/data-science-bootcamp)
    - [Intro to Python](https://www.byteacademy.co/courses/intro-to-python)
- [Career Support](https://www.byteacademy.co/careers-at-byte)
- [APPLY NOW](https://application.byteacademy.co)
- Global 
    - Paraguay
    - India
    - Global

###### 2 min read

# [3 Fundamental Principles of Redux](https://www.byteacademy.co/blog/3-fundamental-principles-of-redux)

 Aug 17, 2020 5:41:20 AM

- [Tweet](https://twitter.com/share)

**Redux**: It is a library for managing states that follow the principles of the flux architecture & is an independent framework, but for the sake of brevity, we'll assume that we are using it with React.

**Single source of truth**

The global state of your application is stored in an object tree within a single store.

Global state (store) Unlike React’s standard architecture, the components state isn’t stored in its component class (with exception to specific cases). All data from the view or received by API’s, databases or any other endpoint is stored in a single global object called the store. The goal of the store is to link each component property to one of its properties. This way, every time that a property data is updated, the component its rendered again using the new data instead. 

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

Actions

"Actions are payloads of information that send data from your application to your store. They are the only source of information for the store." - redux.js.org

That means that every time that you need to change a property data in the store, you need to dispatch an action. In a more technical description, actions are objects that contain a type property (responsible for informing the store about what kind of action it is supposed to execute) and the payload (the actual data to be altered). It is good practice to maintain all data (except the type) inside a single property called payload.

**Changes are made with pure functions:** To specify how the state tree is transformed by actions, you write pure reducers.

Reducers

Although actions can listen to events triggered by the user or by the app, they can't change the state of our store. To make any change in the store, we need to use our middlemen, reducers. Every reducer listens to every action dispatched by the app. It is up to us to define which of these actions it needs to take into account and do something about.

Learn more on [J](https://www.byteacademy.co/courses/python-bootcamp)[avaScript](https://www.byteacademy.co/courses/python-bootcamp), the premier front-end language for all new web developers at [Byte Academy](https://www.byteacademy.co/)

###### Topics: [Student Stories](https://www.byteacademy.co/blog/topic/student-stories) [Programming Tips](https://www.byteacademy.co/blog/topic/programming-tips) [redux](https://www.byteacademy.co/blog/topic/redux)

#### Written by [Tenzin](https://www.byteacademy.co/blog/author/tenzin)

###### [Previous Post](https://www.byteacademy.co/blog/build-ship-deploy-with-docker)

[![](https://via.placeholder.com/300x150.jpg/e0e7ee)](https://www.byteacademy.co/blog/build-ship-deploy-with-docker)

###### [Build Ship & Deploy with Docker](https://www.byteacademy.co/blog/build-ship-deploy-with-docker)

###### [Next Post](https://www.byteacademy.co/blog/blockchain_is_a_girls_best_friend)

[![](https://via.placeholder.com/300x150.jpg/e0e7ee)](https://www.byteacademy.co/blog/blockchain_is_a_girls_best_friend)

###### [Blockchain is A Girl’s Best Friend](https://www.byteacademy.co/blog/blockchain_is_a_girls_best_friend)

### Featured

### Sign up for updates

##### Learn More

Learn More

- [Admissions & Tuition](https://www.byteacademy.co/admissions-tuition)
- [Careers at Byte](https://byteacademy.co/careers-at-byte/)
- [Byte Ambassador](https://byteacademy.co/brand-ambassador/)
- [Contact Us](https://meet.byteacademy.co/?hs_preview=XUIOSGQd-26557024777)

##### Get Started

Get Started

- [Intro to Python](https://meet.byteacademy.co/courses/intro-to-python?hs_preview=AZDAyxFU-26462024908&hsLang=en-us)
- [Workshops](https://www.eventbrite.com/o/byte-academy-8388805444)
- [Events](https://www.meetup.com/pro/byte-academy)

##### Stay Informed

Stay Informed

- [Blog](https://byteacademy.co/blog/)
- [Press](https://byteacademy.co/press-page/)

##### Resources

[ByteDev](https://www.bytedev.co/)

[edChain](https://www.edchain.io/)

[Blockchain Lab](https://blokchainlab.byteacademy.co/)

<https://www.facebook.com/byteacademy/> <https://twitter.com/ByteAcademyCo> <https://www.instagram.com/byteacademy/> <https://www.linkedin.com/edu/school?id=171001> <https://www.youtube.com/channel/UCrMcJALnO748TSK27bZQzSg>

[![byte_academy_logo](https://www.byteacademy.co/hs-fs/hubfs/BYTE%20logo%20files/byte_academy_logo.png?width=100&height=129&name=byte_academy_logo.png "byte_academy_logo")](http://sprytelabs.com)

Copyright © 2020 Byte Academy, Inc.

- [Privacy Policy](https://byteacademy.co/privacy-policy/)