previous
import { previous } from 'patronum';// orimport { previous } from 'patronum/previous';Motivation
The method allows to get previous value of given store. Usually need for analytics
Formulae
$target = previous($source);$target = previous($source, 'initial value');Arguments
$source([Store]) - source storedefaultValue(optional) - default value for$targetstore, if not passed,nullwill be used
Returns
$target([Store]) - new store that contain previous value of$sourceafter first update and null or default value (if passed) before that
Example
Push analytics with route transition:
import { createStore, createEvent, createEffect, sample } from 'effector';import { previous } from 'patronum';
const openNewRoute = createEvent<string>();const $currentRoute = createStore('main_page');const $previousRoute = previous($currentRoute);
const sendRouteTransitionFx = createEffect(async ({ prevRoute, nextRoute }) => { console.log(prevRoute, '->', newRoute) await fetch(...)});
sample({clock: openNewRoute, target: $currentRoute});
sample({ clock: openNewRoute, source: { prevRoute: $previousRoute, nextRoute: $currentRoute, }, target: sendRouteTransitionFx,});
openNewRoute('messages');// main_page -> messagesopenNewRoute('chats');// messages -> chats