Manage side effects in your application.
npm install manage-side-effects[![Build Status][ci-img]][ci]
[![BrowserStack Status][browserstack-img]][browserstack]
Manage side effects in your application.
Great for keeping event listeners and 3rd party plugin instances with their
cleanup methods in one place.
Concept is similar touseEffect hook in React.
``sh`
npm install manage-side-effects --save
`js
import manageSideEffects from 'manage-side-effects';
const sideEffects = manageSideEffects();
// Register side effect
sideEffects.add(() => {
const handler = (event) => {
// Handle document click event
};
document.addEventListener('click', handler);
return () => {
document.removeEventListener('click', handler);
};
});
// Register named side effect
sideEffects.add(() => {
const handler = (event) => {
// Handle document keydown event
};
document.addEventListener('keydown', handler);
return () => {
document.removeEventListener('keydown', handler);
};
}, 'documentKeydownHandler');
// Remove named registered side effect
sideEffects.remove('documentKeydownHandler');
// Remove all registered side effects
sideEffects.removeAll();
`
Returns: Object
Creates side effects manager instance.
Register side effect, providing optional ID for that side effect.
#### sideEffect
Type: Function Function
Returns:
Side effect to register.
Return value should be function which contains cleanup code (e.g. event listener
removing). If return value is not a function, a noop function will be used as
return value.
#### id
Type: string
Side effect ID. Useful when you want to give side effect name so you can easily
remove it with remove method.
Remove side effect with provided ID.
#### id
Type: string
Side effect ID.
Remove all side effects.
Tested in IE9+ and all modern browsers.
For automated tests, run npm run test:automated (append :watch` for watcher
support).
MIT © Ivan Nikolić
[ci]: https://travis-ci.com/niksy/manage-side-effects
[ci-img]: https://travis-ci.com/niksy/manage-side-effects.svg?branch=master
[browserstack]: https://www.browserstack.com/
[browserstack-img]: https://www.browserstack.com/automate/badge.svg?badge_key=dXhKMzErNzFUUVBoODRDbE44KzBKZHlZTWp6Z1MweUxENWlhZDZzTkdvYz0tLXM1c1dhS0IwSUFvM25RZnRpMm9lbFE9PQ==--17a00c20a8c92ddd72ede14849cd244077502d12