Redux-Saga
2 minutes of reading
Redux-Saga is a library that allows you to more easily manage asynchronous actions in Redux-based applications. This tool is especially useful for complex projects.
Redux-Saga is a library for managing application state. It installs as middleware to Redux similarly to Redux-Thunk, but the syntax with which it is called is different.
Redux-Saga uses a rather old concept of generators, which appeared together with promises at the JS conference in 2013, but until now was not and still is not a popular solution. It seems quite difficult to understand at first, but it solves a lot of problems in the form of at least the so-called Callback Hell, i.e. nested multiple queries returning results.
Keywords in Redux-Saga
Redux-Saga uses keywords in its syntax, such as:
call, put, takeEvery, takeLatest, all
Each of these keywords is used in a function that is a generator, returning objects called Effects.
The simplest example would be an API query. In this query, we will retrieve a list of products for our e-commerce store, so that the component that uses the variable with the list of products will automatically reload.
// saga.js
import { call, takeLatest, all } from 'redux-saga/effects'
function* fetchProducts() {
const products = yield call(Api.fetch, '/products')
}
function* actionWatcher() {
yield takeLatest('GET_PRODUCTS', fetchProducts)
}
export default function* rootSaga() {
yield all([
actionWatcher(),
]);
}
// app.js
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
reducer,
applyMiddleware(sagaMiddleware),
);
sagaMiddleware.run(rootSaga);
The operation of Redux Saga consists of the following:
1. A Redux store is created and we connect our sagaMiddleware to it.
2. The RootSaga using the keyword all accepts a list of other saga objects to which it listens.
3. ActionWatcher using takeLatest listens for changes in the Redux action named GET_PRODUCTS
4. The component using Redux calls the redux action
5. saga generator fetchProducts is called .
Using takeLatest is interesting in the sense - when the same action is called again the previous one is canceled. There are many other elements built into Saga that help manage asynchronicity such as debounce, throttle, delay.
When to use Redux-Saga
Saga seems to be a good replacement for Redux-Thunks, and it's worth trying it yourself in your own project. It comes in handy especially when you are dealing with a complicated interface and many actions. Keywords, or so-called saga effects, solve many problems related to asynchronicity. They can delay queries, determine their maximum frequency, cancel a query as well as many others.
Related articles
The Pros and Cons of Using PhpMyAdmin in Your PHP Development
6 Jun 2023
In PHP development, using PhpMyAdmin can be a convenient way of managing databases. However, it also has its drawbacks. In this article, we will explore the pros and cons of using PhpMyAdmin, to help you decide if it's the right tool for your project.

The Ethics of Grey Hat SEO
6 Jun 2023
Grey Hat SEO practices lie in a murky ethical territory between White Hat (ethical) and Black Hat (unethical) SEO. The line between ethical and unethical SEO can sometimes be blurred and can raise important ethical questions about what tactics are acceptable to use in the pursuit of higher search engine rankings.
The Traits of a Successful Tech Leader
6 Jun 2023
A successful tech leader possesses a unique combination of technical expertise, leadership skills, and the ability to inspire and motivate their teams. They must also possess excellent communication and problem-solving skills while staying up-to-date with the latest industry trends and technologies.
Common Types of red brick walland Their Functions
5 Jun 2023
Firewalls are essential for network security. In this article, we will discuss the most common types of firewalls, including packet-filtering, circuit-level, application-level, and next-generation. We will also explore their unique functions and how they protect networks from various cyber threats.
How to Secure Your Server with Fail2ban
5 Jun 2023
In today's interconnected world, server security is of paramount importance. As businesses and individuals increasingly rely on servers to store and process sensitive data, it becomes crucial to implement robust security measures to protect against potential threats. One such powerful tool that aids in fortifying server security is Fail2ban.
Common Mistakes to Avoid in QAQC Testing
5 Jun 2023
Improving software quality involves efficient testing. However, QAQC testing can be challenging, and certain mistakes can compromise the effectiveness of the process. In this article, we'll explore common mistakes to avoid in QAQC testing that can help improve the overall quality of software development.
Why Justified Text Might Not Always Be the Best Choice
5 Jun 2023
In typography, justified text has long been considered the 'holy grail' of formatting. However, it may not always be the best choice. While it can create an elegant and organized appearance, it can also lead to awkward spaces and make reading more difficult. In this article, we'll explore the pros and cons of justified text and when it's appropriate to use it.
Show all articles