🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

react-usemiddleware

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-usemiddleware

React >=16.7 hook, allowing to use standard Redux middleware with useReducer

1.0.2
latest
Source
npm
Version published
Weekly downloads
8
60%
Maintainers
1
Weekly downloads
 
Created
Source

React useMiddleware hook

npm version

Redux compatible middleware provider for React >=16.7 Hooks

react-useMiddleware allows you to use all existing Redux middlewares with React's new feature called hooks. It introduces new hook called useMiddleware, which is a wrapper arounf useReducer, but allows you to pass a list of middlewares to be used.

Install

$ npm install react-usemiddleware --save
$ yarn add react-usemiddleware

API

you can use useMiddleware as a straight replacement for useReducer, and optionally pass 3rd parameter - an array of middlewares to be applied to a dispatch function.

 const [state, dispatch] = useMiddleware(reducer, initialState, middlewares = []);

Takes 3 parameters:

  • reducer, same as passed into useReducer hook
  • initialState, same as passed into useReducer hook
  • middlewares - array of middlewares, eg, [thunk, createLogger, saga]

Example

import React from 'react';
import useMiddleware from 'react-usemiddleware';
import { createLogger } from "redux-logger";
import thunk from "redux-thunk";

const logger = createLogger();
const middlewares = [thunk, logger];

const reducer = (state, action) => {
  switch (action.type) {
    case "INC":
      return state + 1;
    case "DEC":
      return state - 1;
    case "SET":
      return action.payload;
    default:
      return state;
  }
};

const App = (props) => {
  const [count, dispatch] = useMiddleware(reducer, 0, middlewares);

  const thunkAction = dispatch(() => setTimeout(() => dispatch({ type: "SET", payload: 7 })), 1000);
  const incCount = () => dispatch({ type: "INC" });
  const decCount = () => dispatch({ type: "DEC" });

  return (
    <div className="App">
      <button onClick={decCount}>[-]</button>
      <span>{count}</span>
      <button onClick={incCount}>[+]</button>
      <button onClick={thunkAction}>Async</button>
    </div>
  );
}

Live example

A demo can be found here

Contributions

Please open an Issue or a PR

Keywords

react

FAQs

Package last updated on 02 Dec 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts