Skip to content

Listeners

Creating a listener

Listeners add a touch of reactivity to your code, and use EventTarget under the hood.

If the proxy in front of your stores state detects a change to a keys value; a typed Custom Event will be dispatched.

You can also pass event listener options, see the API reference.

typescript
import createStore from 'olallie';

const store = createStore({
  state: {
    count: 0,
  },
});

// (parameter) event: StoreEvent<S, K>
const listener = store.listen(
  'count',
  ({ detail, timeStamp }) => {
    // Values are type-safe
    /*
  param (detail): {
    value: number;
    oldValue: number;
  }
  */
    console.log('%j', {
      newValue: detail.value,
      oldValue: detail.oldValue,
      timeStamp,
    });
  },
  false,
);

store.count++;

Removing a listener

Removing a listener calls removeEventListener() on the stores EventTarget.

typescript
listener.unlisten();