LogoLogo
  • Eventrix
  • Introduction
    • Installation
    • Quick start
    • Getting started
    • Demo
    • About
  • Devtools - EventrixDebugger
  • Use cases
    • Handle errors
    • Simple form management
    • Communication between components
    • Next.js
    • Basic setup on project
    • Fetch list and display in component
  • CONTEXT
    • EventrixProvider
    • PersistStoreGate
    • EventrixScope
  • MIGRATION
    • Redux -> Eventrix
  • Receivers
    • EventsReceiver
    • RequestsHandler
    • fetchToStateReceiver
    • fetchStateReceiver
    • fetchHandler
  • HOC
    • withEventrix
    • withEventrixState
  • HOOKS
    • useEventrixState
    • useEmit
    • useEvent
    • useEventState
    • useFetchToState
    • useReceiver
    • useFetchState
  • CLASS DECORATORS
    • @useEventrix
    • @receiver
    • @fetchToState
    • @listener
  • COMPONENT DECORATORS
    • @eventrixComponent
    • @eventListener
    • @stateListener
    • @eventrixState
Powered by GitBook
On this page

Was this helpful?

Eventrix

Method

attributes

description

constructor

initialState, eventsReceivers

Eventrix class constructor

listen

eventName, listener

Add event listener

unlisten

eventName, listener

Remove event listener

emit

eventName, eventData

Emit event for eventrix instance it will run listeners and events receivers

getState

path

Get eventrix state

useReceiver

eventsReceiver

Register events receiver in eventrix instance it will be used on events emitted

removeReceiver

eventsReceiver

Unregister events receiver from eventrix instance

getParent

-

Get parent eventrix instance

getFirstParent

-

Get first parent eventrix instance

create

scopes

Create eventrix instance with scopes

onError

errorCallback

callback function to catch errors in receivers and listeners called on emit events

Example of simple use of Eventrix

import { Eventrix, EventsReceiver } from 'eventrix';

const usersEventsReceiver = new EventsReceiver(
    'createUserEventName',
    (eventName, eventData, stateManager) => {
        const user = eventData.user;
        const users = stateManager.getState('usersList');
        stateManager.setState('usersList', [user, ...users]);
    }
);

const initialState = {
    usersList: [],
}

const eventsReceivers = [
    usersEventsReceiver,
];

const eventrix = new Eventrix(initialState, eventsReceivers);

export default eventrix;
import { Eventrix, EventsReceiver } from 'eventrix';
import StateManager from 'eventrix/types/StateManager';

interface User {
    id: number;
    name: string;
    age: number;
}

interface UserEventData {
    user: User;
}

interface StoreState {
    usersList: User[];
}

const usersEventsReceiver = new EventsReceiver<UserEventData, void>(
    'createUserEventName',
    (eventName, eventData, stateManager) => {
        const user = eventData.user;
        const users = stateManager.getState('usersList');
        stateManager.setState('usersList', [user, ...users]);
    }
);

const initialState = {
    usersList: [],
}

const eventsReceivers = [
    usersEventsReceiver,
];

const eventrix = new Eventrix<StoreState>(initialState, eventsReceivers);

export default eventrix;

When You emit event with name "createUserEventName" usersEventsReceiver will be invoked and change state of "usersList".

const user = {
    id: 1,
    name: 'Max',
    age: 30,
}

eventrix.emit('createUserEventName', { user });
const user: User = {
    id: 1,
    name: 'Max',
    age: 30,
}

eventrix.emit<UserEventData>('createUserEventName', { user });
NextIntroduction

Last updated 1 year ago

Was this helpful?