Book Image

Redux Made Easy with Rematch

By : Sergio Moreno
Book Image

Redux Made Easy with Rematch

By: Sergio Moreno

Overview of this book

Rematch is Redux best practices without the boilerplate. This book is an easy-to-read guide for anyone who wants to get started with Redux, and for those who are already using it and want to improve their codebase. Complete with hands-on tutorials, projects, and self-assessment questions, this easy-to-follow guide will take you from the simplest through to the most complex layers of Rematch. You’ll learn how to migrate from Redux, and write plugins to set up a fully tested store by integrating it with vanilla JavaScript, React, and React Native. You'll then build a real-world application from scratch with the power of Rematch and its plugins. As you advance, you’ll see how plugins extend Rematch functionalities, understanding how they work and help to create a maintainable project. Finally, you'll analyze the future of Rematch and how the frontend ecosystem is becoming easier to use and maintain with alternatives to Redux. By the end of this book, you'll be able to have total control of the application state and use Rematch to manage its scalability with simplicity.
Table of Contents (18 chapters)
1
Section 1: Rematch Essentials
6
Section 2: Building Real-World Web Apps with Rematch
11
Section 3: Diving Deeper into Rematch

Creating our plugin

Creating a Rematch plugin is as easy as creating an object with some properties, as you'll remember from Chapter 8, The Rematch Plugins Ecosystem. Rematch plugins accept certain properties; in this chapter, we're going to use two of them: onModel and createMiddleware.

onModel

The onModel hook is executed when the whole setup for the model is completed, that is, when the reducers and dispatchers are correctly injected and ready to use. The onModel hook is executed for each model, allowing us to pick or overwrite values from any model.

In our case, we want to save a cache of each typings property of each model. This is a required step for our plugin because we'll need to access these typings properties later to use the plugin in the createMiddleware hook.

Let's next add to the exposed property a new property called onModel:

onModel: (model) => {
  TYPINGS_CACHE[model.name] = model.typings;
}

The TYPINGS_CACHE variable...