@mvuijs/core / rx / State
State<T> #
A MulticastStream that remembers the last emitted value. Useful to model state.
Example #
const state = new State(1);
state.map(v => v + 1).subscribe(console.log);
state.next(4); state.next(3);
// Logs: 2 5 4
// The difference to a normal Subject is that we provide an initial value
// and we could always access the current value with `.value`.
Type parameters #
T
Hierarchy #
-
MulticastStream
<T
>.State
Constructors #
constructor() #
Signature #
new State<T>(initialValue: T, loggingName?: string, loggingCallback: undefined | (name: undefined | string, previous: any, next: any) => void = State.loggingCallback): State<T>;
Type parameters #
T
Parameters #
Name | Type | Default value |
---|---|---|
initialValue |
T |
undefined |
loggingName? |
string |
undefined |
loggingCallback |
undefined | (name : undefined | string , previous : any , next : any ) => void |
State.loggingCallback |
Returns #
State
<T
>
Overrides: MulticastStream . constructor
Defined in: packages/core/src/rx/state.ts:32
Properties #
loggingCallback? #
Function
=undefined
Type declaration #
Signature #
(name: undefined | string, previous: any, next: any): void;
Parameters #
Name | Type |
---|---|
name |
undefined | string |
previous |
any |
next |
any |
Returns #
void
Defined in: packages/core/src/rx/state.ts:29
Accessors #
value #
The current value/state
Signature #
value(): T;
Returns #
T
Defined in: packages/core/src/rx/state.ts:27
Defined in: packages/core/src/rx/state.ts:27
Methods #
asReadonly() #
Shorthand for rx.derive(this, identity)
Signature #
asReadonly(): DerivedState<T>;
Returns #
DerivedState
<T
>
Defined in: packages/core/src/rx/state.ts:75
createLinked() #
Create a linked “child” state object. In contrast to using DerivedState , this LinkedState is always derived from a single State object (this). This allows the definition of a setter.
Although you can use this function manually (see below), you will most likely create LinkedState by using the partial helper:
Partial State #
See partial .
const state = new rx.State({ its: { nested: 4 });
const partial = state.partial('its', 'nested');
partial.next(v => v + 1); // will also update state
Manual Definition #
const state = new rx.State(1);
const linked = new state.createLinked(
v => v + 1,
v => v - 1,
);
state.subscribe(v => console.log(`state: ${v}`)); // logs: 1
linked.subscribe(v => console.log(`linked: ${v}`)); // logs: 2
linked.next(3);
// logs: linked: 3\n state: 2
Signature #
createLinked<ReturnT>(getter: Function, setter: Function): LinkedState<T, ReturnT>;
Type parameters #
ReturnT
Parameters #
Name | Type |
---|---|
getter |
(value : T ) => ReturnT |
setter |
(value : ReturnT , parentNext : (valueOrSetter : T | (currentValue : T ) => T ) => void ) => void |
Returns #
LinkedState
<T
, ReturnT
>
Defined in: packages/core/src/rx/state.ts:111
derive() #
Shorthand for rx. derive (this, definition)
Signature #
derive<ReturnT>(definition: Function, equality: Equality = 'scalar'): DerivedState<ReturnT>;
Type parameters #
ReturnT
Parameters #
Name | Type | Default value |
---|---|---|
definition |
(value : T ) => ReturnT |
undefined |
equality |
Equality |
'scalar' |
Returns #
DerivedState
<ReturnT
>
Defined in: packages/core/src/rx/state.ts:67
next() #
Set a new value and trigger all subscriptions with that new value
Signature #
next(valueOrSetter: T | (currentValue: T) => T): void;
Parameters #
Name | Type |
---|---|
valueOrSetter |
T | (currentValue : T ) => T |
Returns #
void
Overrides: MulticastStream . next
Defined in: packages/core/src/rx/state.ts:56
partial() #
Create a new state object representing a part of this
’s state.
const state = new rx.State({ its: { nested: 4 });
const partial = state.partial('its', 'nested');
partial.next(v => v + 1); // will also update state
Signature #
partial<K1>(k1: K1): LinkedState<T, T[K1]>;
Type parameters #
K1
extendsstring
|number
|symbol
Parameters #
Name | Type |
---|---|
k1 |
K1 |
Returns #
LinkedState
<T
, T
[K1
]>
Defined in: packages/core/src/rx/state.ts:129
Signature #
partial<K1, K2, K3, K4, K5, K6>(
k1: K1,
k2: K2,
k3: K3,
k4: K4,
k5: K5,
k6: K6): LinkedState<T, T[K1][K2][K3][K4][K5][K6]>;
Type parameters #
K1
extendsstring
|number
|symbol
K2
extendsstring
|number
|symbol
K3
extendsstring
|number
|symbol
K4
extendsstring
|number
|symbol
K5
extendsstring
|number
|symbol
K6
extendsstring
|number
|symbol
Parameters #
Name | Type |
---|---|
k1 |
K1 |
k2 |
K2 |
k3 |
K3 |
k4 |
K4 |
k5 |
K5 |
k6 |
K6 |
Returns #
LinkedState
<T
, T
[K1
][K2
][K3
][K4
][K5
][K6
]>
Defined in: packages/core/src/rx/state.ts:155
reset() #
Reset state to initial value
Signature #
reset(): void;
Returns #
void
Defined in: packages/core/src/rx/state.ts:42