Skip to content
This repository has been archived by the owner on Aug 10, 2019. It is now read-only.

fabiospampinato/unstated-suspense-middleware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unstated Suspense Middleware

Add middlewares support to unstated-suspense.

Install

npm install --save unstated-suspense-middleware

Usage

The following is an overly semplicistic example of how middlewares are added to unstated, but it illustrates the new APIs available and how to use them.

import * as React from 'react';
import {Container} from 'unstated-suspense-middleware';

class AppContainer extends Container {
  state = {
    value: 'No value...'
  };
  middlewares () { // This function is called by the constructor, it's just a convenience method where you can define your middlewares
    this.addMiddleware ( this.middlewareValueChanged ); // Add a new middleware via the `addMiddleware` method
  }
  middlewareValueChanged ( prevState ) { // Middlewares are called with the previous state
    if ( prevState.value !== this.state.value ) {
      this.removeMiddleware ( this.middlewareValueChanged ); // Remove a middleware via the `removeMiddleware` method
      return state = { value: 'middleware!' }; // A middleware can either mutate the state (ouch!) or return a new one
    }
  }
  updateValueFoo () {
    this.suspendMiddlewares (); // Suspend execution of middlewares
    this.setState ({ value: 'foo' });
    this.setState ({ value: 'foo2' });
    this.setState ({ value: 'foo3' });
    this.unsuspendMiddlewares (); // Resume execution of middlewares, since the state changed while middlewares were suspended they will be called, and they will receive the state available at the moment of the suspension
  }
  updateValueBar () {
    this.setState ({ value: 'bar' });
  }
}

Note: Middlewares are not re-executed when any of them update the state.

Note: Middlewares are executed in the order that they are added, make sure you're adding them in the right order.

Related

License

MIT © Fabio Spampinato

About

Add middlewares support to `unstated-suspense`.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published