1.1.0 • Published 4 years ago
effector-throttle v1.1.0
Effector Throttle
https://codesandbox.io/s/effector-throttle-debounce-w32tk
Installation
npm install --save effector effector-throttle
# or
yarn add effector effector-throttle
Usage
Create event that should be throttled:
import { createEvent } from 'effector';
const someHappened = createEvent<number>();
Create throttled event from it:
import { createThrottle } from 'effector-throttle';
const THROTTLE_TIMEOUT_IN_MS = 200;
const throttled = createThrottle(someHappened, THROTTLE_TIMEOUT_IN_MS);
To test that original event is correctly throttled you can add watcher:
someHappened.watch((payload) => {
console.info('someHappened now', payload);
});
throttled(1);
throttled(2);
throttled(3);
throttled(4);
Also you can use Effect
and Store
as trigger. createThrottle
always returns Event
:
const event = createEvent<number>();
const debouncedEvent: Event<number> = createThrottle(event, 100);
const fx = createEffect<number, void>();
const debouncedEffect: Event<number> = createThrottle(fx, 100);
const $store = createStore<number>(0);
const debouncedStore: Event<number> = createThrottle($store, 100);
Change name
const trigger = createEvent();
const throttled = createThrottle(trigger, 100);
// Now throttled var has `triggerThrottleTick` name
To change name:
const trigger = createEvent();
const throttled = createThrottle(trigger, 100, { name: 'Hello' });
// Now throttled var has `HelloThrottleTick` name