State
Entity to store the state
Has the same api as AbstractState
constructor
ts
function constructor(state: T): State<T>;
changeOn (method)
Method to change the state using an event
Interface:
ts
function changeOn<Payload extends T>(event: Event<Payload>): this;
ts
function changeOn<Payload>(
event: Event<Payload>,
selector: (payload: Payload, state: T, prevState: T) => T
): this;
Example:
ts
const $m = new SvitoreModule();
const counter = $m.State(0);
const counterChanged = $m.Event<number>();
counter.changeOn(counterChanged);
You can use in several ways
if the event type matches the state type - short form:
ts
counter.changeOn(counterChanged);
if you want to transform the value
ts
counter.changeOn(counterChanged, (payload) => payload * 10);
if you want to calculate a value based on the state
ts
counter.changeOn(counterChanged, (payload, state) => state + payload);
resetOn (method)
Reset state to default value
Interface:
ts
function resetOn(event: Event<any>): this;
Example:
ts
const $m = new SvitoreModule();
const counter = $m.State(5);
const counterChanged = $m.Event<number>();
const reset = $m.Event();
counter.changeOn(counterChanged).resetOn(reset);
counterChanged.dispatch(10);
reset.dispatch();
counter.get(); // 5