This is a redux middleware that detects duplicate actions & shows this in the console. Ideal for ensuring good redux practices. Development use only!
If there is a duplicate action you will see this in the browser console:
[redux-duplicate-actions] A duplicate action has been detected.
[redux-duplicate-actions] Unique action hash: e6d0f668
[redux-duplicate-actions] Unpacked action: {type: 'SET_DATA', payload: {…}}
[redux-duplicate-actions] Original action: {type: 'SET_DATA', payload: ƒ} // Read below
If your payload is a function the middleware we will attempt to unpack it and show you the actual data. It does this by simply running the function against store.getState()
. So effectively action.payload(store.getState())
. If this fails it will do the comparison as normal.
Supports Node 10.x +
Run this in the terminal:
npm install --save-dev redux-duplicate-actions
or
yarn add -D redux-duplicate-actions
Supported options:
fatal
(type: boolean) - if true
, will throw an error when a duplicate action is detected. Default is false
.
logLevel
(type: 'log' | 'warn' | 'error') - the level of logging to the console. Default is "warn"
.
payloadKey
(type: string) - the key to use to get the payload for the redux action. Default is "payload"
.
unpackPayloadIfFunction
(type: boolean) - if true, will attempt to unpack the payload if it is a function. Default is true
.
if (__DEV__) {
// To thrown fatal error on duplicate action
const reduxDuplicateActions = require("redux-duplicate-actions")({
fatal: true,
});
reduxMiddleware.push(reduxDuplicateActions);
// To log duplicate action as warning
const reduxDuplicateActions = require("redux-duplicate-actions")({
fatal: false
});
reduxMiddleware.push(reduxDuplicateActions);
}
Run the following commands to test the module:
yarn install && yarn test
All contributions are very welcome, please read my CONTRIBUTING.md first. You can submit any ideas as pull requests or as GitHub issues. If you'd like to improve code, please feel free!